Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Query problematica...

  1. #1

    Query problematica...

    Ciao, ennesimo problema con una query....
    Ho 2 tabelle:
    codice:
    tab_insegnanti 
    id_insegnante      nome_insegnante 
    1                     rossi
    2                     verdi
    3                     gialli
    4                     bianchi
    codice:
    tab_alunni 
    id_alunno      nome_alunno      rif_insegnante 
    1                roberta               1
    2                monica                2
    3                marco                 2
    4                simona                3
    5                matteo                3
    6                franco                3
    Vorrei eseguire una query per ottenere il seguente risultato

    codice:
    -----------------------------------
    --NOME INSEGNANTE--+--NOME ALUNNO--
    -------------------+---------------
    --     rossi       +    roberta  --
    --     verdi       +    monica   --
    --     verdi       +    marco    --
    --     gialli      +    simona   --
    --     gialli      +    matteo   --
    --     gialli      +    franco   --
    --     bianchi     +             --
    -----------------------------------
    in modo che vengano mostrati TUTTI gli alunni e, allo stesso tempo, anche gli eventuali insegnanti senza alunni associati.
    Se imposto la query in questo modo:

    SELECT tab_alunni.*, tab_insegnanti.*
    FROM tab_alunni, tab_insegnanti
    WHERE tab_alunni.rif_insegnante = tab_insegnanti.id_insegnante


    ottengo si tutti gli alunni, ma ovviamente l'eventuale insegnante senza alunno associato (nell'esempio "bianchi") non appare nel risultato.
    Esiste una soluzione al problema?

    Grazie in anticipo!

  2. #2
    Io toglierei il "Rif_insegnante" dalla tab_alunni e metterei invece un "rif_alunno" nella tab_insegnanti così:


    tab_insegnanti
    id_insegnante nome_alunno rif_alunno
    1 rossi 1
    2 verdi 2
    3 neri 2
    4 gialli 3


    tab_alunni
    id_alunno nome_alunno
    1 roberta
    2 monica
    3 marco
    4 gino
    5 Lino
    6 Pino
    7 Piero


    Poi fai la select:

    SELECT Tab_insegnanti.Id_insegnante, Tab_insegnanti.Nome_insegnante, Tab_insegnanti.rif_alunno
    FROM Tab_insegnanti;

    oppure più semplicemente:

    SELECT Id_insegnante, Nome_insegnante, rif_alunno
    FROM Tab_insegnanti;

    che poi è la stessa cosa
    Prooova!

  3. #3
    Grazie Michele, provo subito!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    bisogna usare le left(right) join !
    metti la tab_insegnanti in left join con tab_alunni dove tab_alunni.rif_insegnante = tab_insegnanti.id_insegnante
    e tutto funziona

  5. #5
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Originariamente inviato da stabi
    bisogna usare le left(right) join !
    metti la tab_insegnanti in left join con tab_alunni dove tab_alunni.rif_insegnante = tab_insegnanti.id_insegnante
    e tutto funziona
    Condivido....

    Infatti la soluzione di michele.santoro è logicamente errata perchè un insegnante può avere più alunni...
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  6. #6
    Hops!! è vero, non l'avevo minimamente preso in considerazione il fatto della relazione uno a molti. Mi era proprio sfuggito.

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