Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: help query

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371

    help query

    SELECT tb_tab1.*, SUM(tb_tab2.ordinato) as totale FROM tb_tab1 LEFT JOIN tb_tab2 ON tb_tab1.id = tb_tab2.id_tab1 WHERE tb_tab2.id_attivo='1' GROUP BY tb_tab1.id


    Nella tabella 1 ho nomi clienti, nella tabella 2 i suoi ordini dove ho un campo... cosi facendo raggruppo i Nomi clienti e li vedo correttamente raggruppati facendo il totale del loro ordinato, unica cosa che non riesco vorrei vedere anche i clienti che non hanno ordini......
    cerco di spiegare meglio:

    tab1
    id - nome
    1 MARIO
    1 GIGI
    1 ANTONIO

    tab2
    id - importo -id_tab1 - attivo
    1 - 90 - 1 - 1
    2 - 50 - 1 - 1
    3 - 20 - 1 - 1
    4 - 25 - 1 - 0
    5 - 35 - 1 - 1
    6 - 60 - 2 - 0
    7 - 55 - 2 - 1
    8 - 45 - 2 - 1



    Risultato che vorrei ottenere

    MARIO = 195 (90 + 50 + 20 + 35)
    GIGI = 100 (55 + 45)
    ANTONIO = 0

    grazie

  2. #2
    standing ovation per il titolo del thread occorre (ri)lettura attenta e consapevole del regolamento

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    scusa il titolo scaltro ....
    spero almeno di essere chiaro su cio che vorrei ottenere....
    tutti i record di tab1 indifferentemente se hanno record in tab2
    se non erro in sql dovrebbe essere
    LEFT OUTER JOIN

    ma non mi funziona...!!!!

  4. #4
    di che db stiamo parlando? (anche qui, il regolamento dice di indicarlo...)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Mysql Vers. 5.7.11
    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Togliendo la parte WHERE tb_tab2.id_attivo='1' ossia eseguendo questa SELECT tb_tab1.*, SUM(tb_tab2.ordinato) as totale FROM tb_tab1 LEFT JOIN tb_tab2 ON tb_tab1.id = tb_tab2.id_tab1 GROUP BY tb_tab1.id
    ottengo tutti i record della tab1
    unica cosa che le somme fatte nella tabella 2 non sono filtrate per id_attivo='1' percui sbagliate..
    Qualcuno che mi aiuta please



  7. #7
    Quote Originariamente inviata da max1974 Visualizza il messaggio
    Togliendo la parte WHERE tb_tab2.id_attivo='1' ossia eseguendo questa SELECT tb_tab1.*, SUM(tb_tab2.ordinato) as totale FROM tb_tab1 LEFT JOIN tb_tab2 ON tb_tab1.id = tb_tab2.id_tab1 GROUP BY tb_tab1.id
    ottengo tutti i record della tab1
    unica cosa che le somme fatte nella tabella 2 non sono filtrate per id_attivo='1' percui sbagliate..
    Qualcuno che mi aiuta please


    i record che non hanno corrispondenza avranno tb_tab2.id_tab1 , tb_tab2.is_attivo, etc... =null.
    se li vuoi basta che metti
    WHERE (tb_tab2.id_attivo='1' OR ....)

    P.S.
    sarà null anche
    tb_tab2.ordinato per cui forse è bene sostituirlo con 0 se NULL


  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Grazie ,
    nella query iniziale avevo messo
    SELECT tb_tab1.*, SUM(tb_tab2.ordinato) as totale FROM tb_tab1 LEFT JOIN tb_tab2 ON tb_tab1.id = tb_tab2.id_tab1 WHERE tb_tab2.id_attivo='1' GROUP BY tb_tab1.id
    ma cosi le somme sul campo tab2.ordinato sono corrette , ma non vedo più tutti i record della tabella 1....
    spero di essermi spiegato
    in riferimento ad esempio sopra vedo soltanto ....
    MARIO = 195
    GIGI = 100
    e non vedo più
    ANTONIO = 0


  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    se metto un OR mi somma anche il record n°4 che ha importo 25€ ma ha attivo = 0, percui non credo che OR sia la soluzione giusta

  10. #10
    Quote Originariamente inviata da max1974 Visualizza il messaggio
    se metto un OR mi somma anche il record n°4 che ha importo 25€ ma ha attivo = 0, percui non credo che OR sia la soluzione giusta
    mostra la quesry con l'OR aggiunto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.