Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    [SQL] Interrogazioni su istanze della stessa tabella

    Ciao, sto studiando per l'esame di basi di dati, e c'è qualcosa nelle slide che non mi è molto chiara, mi aiutereste? Grazie!
    Nella clausola where possono comparire più istanze della stessa tabella. Fin qui...
    L'esempio che cita è quello di una tabella "Genitori", così composta:
    Nome, Cognome, NomeGen, CognomeGen.
    Supponiamo di dover conoscere i nonni di una certa persona, Pinco Pallo, che compare nella tabella.
    La soluzione proposta è la seguente:

    SELECT NOME, COGNOME
    FROM GENITORI AS G1, GENITORI AS G2
    WHERE (G1.NOMEGEN=G2.NOME) AND (G1.COGNOMEGEN=G2.COGNOME) AND (G1.NOME="Pinco") AND (G1.COGNOME="Pallo").

    Ecco, questa query non la capisco proprio!

  2. #2
    leggi due volte la stessa tabella, una volta come G1 e una volta come G2, come fossero due tabelle diverse. pensa di avere due tabelle esattamente l'una copia dell'altra, rileggi la query in quest'ottica e vedrai che diventerà chiara

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ti ringrazio per la tua risposta, ma purtroppo non mi aiuta

  4. #4
    che vuol dire che non ti aiuta?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Che non mi è più chiaro di prima
    Provo a fare qualche domanda specifica così è più facile: G1 e G2 non sono altro che due istanze della stessa tabella, giusto?
    Tra l'altro mi accorgo che ho sbagliato a scrivere la prima riga della SELECT, che doveva essere invece:

    SELECT G2.NOMEGEN, G2.COGNOMEGEN

    (non posso correggere il msg iniziale)

    Se nella select, lasciando il resto invariato, ci fosse stato:

    SELECT G1.NOMEGEN, G1.COGNOMEGEN

    il risultato sarebbe stato lo stesso?

    Ho visto che la query funziona (ovviamente), mi appare meno chiaro perché sia stato necessario il prodotto cartesiano della tabella con se stessa.
    Ultima modifica di Jamie04; 31-05-2016 a 22:32

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il padre del padre di Pinco è il nonno. Si puo' dire :

    Seleziona il genitore (G2.NOMEGEN) il cui figlio (G2.NOME) è il genitore (G1.NOMEGEN) del figlio chiamato Pinco (G1.NOME)

    SELECT G2.NOMEGEN FROM GENITORI G2, GENITORI G1
    WHERE G2.NOME = G1.NOMEGEN AND G1.NOME = 'Pinco'
    Ultima modifica di badaze; 31-05-2016 a 23:19
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Grazie, più o meno credo di aver capito!

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.