FORUM DEL CORSO DI BASI DI DATI

Forum del corso di Basi di Dati - Ingegneria Gestionale - Università di Roma La Sapienza


    Il DISTINCT fa differenza?

    Condividi

    Gabry

    Maschio
    Numero di messaggi : 3
    Età : 30
    Occupazione/Hobby : Studente
    Data d'iscrizione : 14.03.09

    Il DISTINCT fa differenza?

    Messaggio Da Gabry il Mer Mar 25, 2009 2:13 pm

    Salve.
    Non mi è chiaro un aspetto di un esempio di query SQL svolto a lezione.
    Si chiede: trovare i velisti che hanno prenotato almeno una barca.
    La query è la seguente (questo mi è chiaro):

    SELECT V.vid

    FROM Velisti V, Prenota P

    WHERE V.vid = P.vid

    Però nella slide (numero 7 del capitolo 4) ci sono queste due domande:
    1) Farebbe differenza aggiungere DISTINCT a questa interrogazione?
    2) Qual è l’effetto della sostituzione di V.vid con V.vnome nella clausola SELECT? Farebbe differenza aggiungere DISTINCT a questa variante dell’interrogazione?

    A quanto ho capito a lezione, nel primo caso aggiungere DISTINCT non fa differenza, mentre nel secondo sì, ma non ne capisco il motivo.
    Nel caso in cui un velista abbia prenotato più di una barca in giorni diversi, non potrebbe verificarsi che ci siano dei duplicati nel risultato? Question

    Ringrazio anticipatamente chi mi aiuterà a chiarire il dubbio.
    Saluti

    A.Marrella
    Admin

    Maschio
    Numero di messaggi : 72
    Età : 36
    Occupazione/Hobby : Tutor
    Data d'iscrizione : 26.02.09

    Re: Il DISTINCT fa differenza?

    Messaggio Da A.Marrella il Dom Mar 29, 2009 9:48 pm

    Gabry ha scritto:Salve.
    Non mi è chiaro un aspetto di un esempio di query SQL svolto a lezione.
    Si chiede: trovare i velisti che hanno prenotato almeno una barca.
    La query è la seguente (questo mi è chiaro):

    SELECT V.vid

    FROM Velisti V, Prenota P

    WHERE V.vid = P.vid

    Però nella slide (numero 7 del capitolo 4) ci sono queste due domande:
    1) Farebbe differenza aggiungere DISTINCT a questa interrogazione?
    2) Qual è l’effetto della sostituzione di V.vid con V.vnome nella clausola SELECT? Farebbe differenza aggiungere DISTINCT a questa variante dell’interrogazione?

    A quanto ho capito a lezione, nel primo caso aggiungere DISTINCT non fa differenza, mentre nel secondo sì, ma non ne capisco il motivo.
    Nel caso in cui un velista abbia prenotato più di una barca in giorni diversi, non potrebbe verificarsi che ci siano dei duplicati nel risultato? Question

    Ringrazio anticipatamente chi mi aiuterà a chiarire il dubbio.
    Saluti
    Buonasera,
    nel primo caso non fa differenza, in quanto vid è una chiave primaria, e perciò non può contenere duplicati (quindi l'eventuale aggiunta di DISTINCT non cambia affatto il risultato finale)
    nel secondo caso il risultato è "proiettato" rispettato a vnome...perciò, come ha correttamente affermato lei, "Nel caso in cui un velista abbia prenotato più di una barca in giorni diversi, potrebbe verificarsi che ci siano dei duplicati nel risultato". In questo caso l'aggiunta di DISTINCT elimina gli eventuali duplicati relativi al nome dei velisti.....non inserire DISTINCT, potrebbe portare ad una relazione risultato che contiene più di una tupla rappresentante lo stesso velista...il che è un'inutile ridondanza

      La data/ora di oggi è Sab Nov 17, 2018 1:42 pm