Query annidate

di Anonimizzato18885 il
6 risposte
Salve a tutti ho questo schema relazionale:

Auto (Targa(PK), Marca, Cilindrata, Potenza, CodF(FK), CodAss(FK))
Proprietari (CodF(PK), Nome, Residenza)
Assicurazioni (CodAss(PK), Nome, Sede)
Sinistro (CodS(PK), Località, Data)
AutoCoinvolte(CodS(PK), (PK)Targa, Danno)

Ora ho questa query:
Targa e Nome del proprietario delle Auto assicurate presso la “SARA” di Pisa, e coinvolte in sinistri il 20/01/2010.

io avevo pensato di fare una query annidata ma la soluzione proposta dal professore fa una query unica, la mia domanda è: quand'è che conviene fare una query annidata e quando no? Grazie

6 Risposte

  • Non ho idea di cosa sia una query "annidata".
    prova magari a spiegarlo
  • F1 sarebbe tipo il ciclo for annidato
  • IlDoctor ha scritto:


    F1 sarebbe tipo il ciclo for annidato
    sono un pochino confuso, non esistono i cicli in SQL "standard".
    fai qualche esempio, magari risulta più chiaro (se stai tentanto di definire una subquery, una subquery dipendente, o non so che)
  • +m2+ ha scritto:


    IlDoctor ha scritto:


    F1 sarebbe tipo il ciclo for annidato
    sono un pochino confuso, non esistono i cicli in SQL "standard".
    fai qualche esempio, magari risulta più chiaro (se stai tentanto di definire una subquery, una subquery dipendente, o non so che)
    So che non esistono cicli in SQL ma il professore ci ha dato solo questo termine, mai sentito subquery ma credo siano la stessa cosa, comunque cercando di risolvere il problema posto dal professore non posso usare queste famose "query annidate" è appurato, ora ti faccio l'esempio in un altro esercizio
    SCHEMA RELAZIONALE
    .....
    Film (CodFilm(PK), Titolo, AnnoProduzione, Regista, genere, nazionalità)
    .....
    query: cercare i titoli dei film dello stesso regista di Casa Blanca
    
    SELECT F.Titolo
    FROM Film F
    WHERE F.regista 
    IN
    SELECT F.regista
    FROM Film F
    WHERE f.titolo= "Casa Blanca"
    
  • IlDoctor ha scritto:


    So che non esistono cicli in SQL ma il professore ci ha dato solo questo termine, mai sentito subquery ma credo siano la stessa cosa...
    Si chiamano proprio "subquery"

    Nel tuo esempio usi gli stessi identificatori (il che è male).
    Le subquery possono essere dipendenti, o indipendenti, e a seconda dei casi efficienti, oppure no (nel caso di mysql per anni sono state estremamente inefficianti, a causa di un utilizzo stile nested loop. poi mariadb ha iniziato a migliorare, e mysql ha copiato, e mariadb ha migliorato ancora eccetera).

    Detto questo, quali costrutti ti hanno insegnato? Quali devi usare?
  • Cioè tra la prima query e la seconda devo cambiare quella f? comunque count, select distinc, having, avg, count, min, max, group by, sum, EXISTS dovrebbero essere tutte
Devi accedere o registrarti per scrivere nel forum
6 risposte