• User Newbie

    Problemi ordinamento dati in una query

    Ciao,
    mi sono appena iscritta perché ho bisogno del vostro aiuto.
    Ho cercato nel vostro forum qualche indicazione per il mio problema, ma non sono riuscita a trovare niente che mi aiutasse
    quindi ecco il mio problema

    ho due tabelle
    tabella** fornitori** con campo *id_forn *(int) e campo nome (varchar)
    tabella spese con campo id_spe (int) , id_forn_spe (int) e spesa (float)

    dove id_forn_spe della tabella spese corrisponde a id_forn della tabella fornitori

    ho una query che elenca tutte le spese (SELECT * from spese)
    voglio modificarla per fare in modo che le spese vengano ordinate per il nome fornitore in ordine alfabetico

    la query SELECT * FROM spese join fornitori on fornitori.id_forn = spese.id_forn_spe ORDER BY nome
    funziona correttamente

    il mio problema però è che nella tabella spese il fornitore non è un campo obbligatorio,
    quindi ci sono delle righe dove il campo id_forn_spe è vuoto
    se faccio la query precedente queste righe senza fornitore non vengono visualizzate (giustamente)

    come faccio a visualizzare tutte le spese, comprese le righe che non hanno il fornitore e le altre con i nomi dei fornitori ordinati?

    ho provato ad utilizzare la** UNION** con una query SELECT * FROM spese WHERE ((spese.id_forn_spe='')
    ma se ho capito bene non funziona perché la prima select ha una join e quindi le due select non hanno le stesse colonne

    Spero di essere stata chiara nell'esposizione del problema
    e spero sappiate essermi d'aiuto

    intanto, grazie mille :smile5:


  • User Attivo

    Ciao grillo70 e benvenuta nel ForumGT
    il tuo problema è sulla JOIN: non devi usare una JOIN ma una LEFT JOIN che, di base, inserisce tutte le righe della tabella a sinistra.

    Prova a dare un'occhiata a questi schemi
    http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins


  • User Newbie

    Grazie PietroR
    per il soluzione e il link agli schemi che sono davvero esplicativi
    Sono riuscita a risolvere

    grazie mille 😄
    buon fine settimana