Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    [SQL] Select di due tabelle

    Salve.


    codice:
    SELECT maestri.*,lezioni.lez FROM maestri 
    INNER JOIN maestri ON lezioni.id_ins = maestri.id WHERE 
    lezioni.anno = '2012' AND lezioni.week = '1' ORDER BY maestri.citta
    Vorrei che questa SELECT mi listasse anche i record che non hanno valore nel campo lez.
    Come posso fare?

  2. #2
    usa LEFT JOIN invece di INNER JOIN

  3. #3
    codice:
    SELECT maestri.*,lezioni.lez FROM lezioni 
    LEFT JOIN maestri ON lezioni.id_ins = maestri.id WHERE 
    lezioni.anno = '2012' AND lezioni.week = '1' ORDER BY maestri.citta
    Stesso risultato mi da tutti i record con lez > 0 e gli altri non li visualizza.

  4. #4
    Ho anche messo:
    lez IS NOT NULL

    codice:
    SELECT maestri.*,lezioni.lez FROM lezioni 
    LEFT JOIN maestri ON lezioni.id_ins = maestri.id WHERE 
    lezioni.anno = '2012' AND lezioni.week = '1' AND lez IS NOT NULL ORDER BY maestri.citta

  5. #5
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Prova così
    SELECT maestri.*,lezioni.lez FROM lezioni LEFT JOIN maestri ON lezioni.id_ins = maestri.id WHERE lezioni.anno = '2012' AND lezioni.week = '1' AND lezioni.lez IS NOT NULL ORDER BY maestri.citta
    Oppure metti lezioni.lez uguale o maggiore a Ø presumendo che lez sia un campo di tipo numerico.
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  6. #6
    evidentemente NON hai righe con lezioni.lez=0 quando lezioni.anno = '2012' e lezioni.week = '1'

    prova con

    WHERE (lezioni.anno = '2012' AND lezioni.week = '1') OR (lezioni.lez=0)

  7. #7
    esatto alcuni record hanno valore in lez (campo numerico) settimana 1 anno 2012 e altri no.

    Ho provato sia con:

    codice:
    SELECT maestri.*,lezioni.lez FROM lezioni LEFT JOIN maestri ON lezioni.id_ins = maestri.id WHERE lezioni.anno = '2012' AND lezioni.week = '1' AND lezioni.lez IS NOT NULL ORDER BY maestri.citta
    Che con:
    codice:
    SELECT maestri.*,lezioni.lez FROM lezioni LEFT JOIN maestri ON lezioni.id_ins = maestri.id WHERE lezioni.anno = '2012' AND lezioni.week = '1' AND lezioni.lez >=0 ORDER BY maestri.citta
    che con:

    codice:
    SELECT maestri.*,lezioni.lez FROM lezioni LEFT JOIN maestri ON lezioni.id_ins = maestri.id WHERE (lezioni.anno = '2012' AND lezioni.week = '1') OR (lezioni.lez=0) ORDER BY maestri.citta
    Ma senza successo.

  8. #8
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    non si capisce bene che cosa vuoi ottenere, se un mestro non ha lezioni nel 2012 e tu metti lezioni.anno = '2012' è ovvio che non te lo da, facci un esempio di come vorresti l'output con dei dati.

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  9. #9
    ok allora io vorrei la lista di tutti i record della tabella maestri.
    Che risolvo semplicemente facendo
    codice:
    SELECT * FROM maestri ORDER BY citta
    Il punto è che io vorrei accanto ai record il campo lez dell'anno 2012 settimana 1 se cè ne sono ma comunque la lista dovrebbe rimanere intatta a *

    Spero di aver spiegato bene

  10. #10
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    allora devi togliere la clausola WHERE

    codice:
    SELECT maestri.*,lezioni.lez FROM lezioni 
    LEFT JOIN maestri ON lezioni.id_ins = maestri.id 
    ORDER BY maestri.citta
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.