Query annidate

di il
6 risposte

Query annidate

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

  • Re: Query annidate

    Non ho idea di cosa sia una query "annidata".
    prova magari a spiegarlo
  • Re: Query annidate

    F1 sarebbe tipo il ciclo for annidato
  • Re: Query annidate

    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)
  • Re: Query annidate

    +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"
    
  • Re: Query annidate

    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?
  • Re: Query annidate

    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