SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Basi di Dati

Esercizi di interrogazioni complesse (II parte)
DB Mobili
    Articoli (Art_Cod, Cat_Cod, Art_Descrizione, Art_Prezzo, Art_IVA, 
      Art_Spese_Trasporto)
       FK: Cat_Cod REFERENCES Categorie
    Categorie (Cat_Cod, Cat_Descrizione)
    Componenti (Com_Cod, Com_Descrizione, Com_Costo, Lab_Cod)
       FK: Lab_Cod REFERENCES Laboratori
    Laboratori (Lab_Cod, Lab_Indirizzo, Lab_Citta, Lab_Telefono)
    Ordini (Ord_Cod, Neg_Cod, Ord_Data)
       FK:  Neg_Cod REFERENCES Negozi
    Negozi (Neg_Cod, Neg_Nome, Neg_Indirizzo, Neg_Citta, Neg_Telefono)
    CompArt (Art_Cod, Com_Cod, CompArt_Qta)
       FK: Art_Cod REFERENCES Articoli
       FK: Com_Cod REFERENCES Componenti
    OrdArt (Ord_Cod, Art_Cod, OrdArt_Qta)
       FK: Ord_Cod REFERENCES Ordini
       FK: Art_Cod REFERENCES Articoli


2                                               Esercizi di interrogazioni complesse (II parte)
Ordini
                            Ord_Cod
                            Neg_Cod
DB Mobili                   Ord_Data

                         OrdArt
    Negozi                  Ord_Cod
       Neg_Cod              Art_Cod
       Neg_Nome             OrdArt_Qta
       Neg_Indirizzo
                         Articoli
       Neg_Citta
       Neg_Telefono         Art_Cod
                            Cat_Cod
                            Art_Descrizione
    Categorie               Art_Prezzo
                            Art_IVA
       Cat_Cod              Art_Spese_Trasporto
       Cat_Descrizione
                         CompArt
                            Art_Cod
    Laboratori              Com_Cod
                            CompArt_Qta
       Lab_Cod
       Lab_Indirizzo
                         Componenti
       Lab_Citta
       Lab_Telefono         Com_Cod
                            Com_Descrizione
                            Com_Costo
3                             Esercizi di interrogazioni complesse (II parte)
                            Lab_Cod
DB Mobili – Query binarie
    I codici degli ordini del negozio con codice 123 e quelli in cui 
    vengono richiesti più di 10 pezzi dello stesso articolo

    SELECT Ord_Cod
    FROM Ordini
    WHERE Neg_Cod = '123'
       UNION
    SELECT Ord_Cod
    FROM OrdArt
    WHERE OrdArt_Qta > 10



4                                          Esercizi di interrogazioni complesse (II parte)
DB Mobili – Query nidificate
    I componenti meno utilizzati nelle composizioni, ovvero che 
    compaiono meno della media nella composizione dei vari 
    articoli

    SELECT DISTINCT Com_Cod
    FROM CompArt
    WHERE CompArt_Qta <
       (SELECT AVG(CompArt_Qta)
        FROM CompArt)




5                                       Esercizi di interrogazioni complesse (II parte)
DB Mobili – Query nidificate
    Gli articoli per cui non vi sono ordini 

    SELECT *
    FROM Articoli
    WHERE NOT EXISTS
       ( SELECT * 
      FROM OrdArt
      WHERE OrdArt.Art_Cod = Articoli.Art_Cod)




6                                          Esercizi di interrogazioni complesse (II parte)
DB Mobili – Query nidificate
    Per il componente “ANTA”, la differenza rispetto al costo medio 
    dei componenti 

    SELECT (Com_Costo ‐
       (SELECT AVG(Com_Costo)
        FROM Componenti) ) AS Differenza
    FROM Componenti
    WHERE Com_Descrizione ='ANTA'




7                                       Esercizi di interrogazioni complesse (II parte)
DB Esami
    S (Matr, SNome, Citta, ACorso)
    C (CC, CNome, CD)
      FK:  CD REFERENCES D           S
    D (CD, CNome, Citta)                 Matr SNome    Citta    Acorso
    E (Matr, CC, Data, Voto)         E
      FK: Matr REFERENCES S              Matr CC Data    Voto 
      FK: CC REFERENCES C
                                     C
                                         CC CNome CD

                                     D
                                         CD CNome Citta




8                                        Esercizi di interrogazioni complesse (II parte)
DB Esami – Query binarie
    Città di studenti ma non di docenti 

    SELECT Citta FROM S
    EXCEPT
    SELECT Citta FROM D

    SELECT Citta
    FROM S
    WHERE Citta NOT IN ( SELECT Citta
                      FROM D)



9                                          Esercizi di interrogazioni complesse (II parte)
DB Esami – Query nidificate
     Studenti con anno di corso più basso

     SELECT *
     FROM S
     WHERE ACorso <= ALL (SELECT ACorso
                         FROM S)




10                                      Esercizi di interrogazioni complesse (II parte)
DB Esami – Query nidificate
     Nome degli studenti che hanno sostenuto l'esame del corso C323

     SELECT SNome
     FROM S
     WHERE Matr IN (SELECT Matr
                     FROM E
                     WHERE CC='C323')

     Questa query è riscrivibile in una query semplice:

     SELECT SNome
     FROM E,S
     WHERE E.Matr=S.Matr
     AND E.CC='C323'


11                                           Esercizi di interrogazioni complesse (II parte)
DB Esami – Query nidificate
     Nome degli studenti che non hanno sostenuto l'esame del corso 
     C323

     SELECT SNome
     FROM S
     WHERE Matr NOT IN (SELECT Matr
                         FROM E
                         WHERE CC='C323')

     SELECT SNome
     FROM S
     WHERE Matr <> ALL (SELECT Matr
                          FROM E
                          WHERE CC='C323')

12                                         Esercizi di interrogazioni complesse (II parte)
DB Esami – Query nidificate
     SELECT SNome
     FROM S
     WHERE NOT EXISTS   (   SELECT *
                             FROM E
                             WHERE E.Matr=S.Matr
                             AND E.CC='C323')

     NOTA: nessuna delle varianti viste è riscrivibile come query semplice. 
     Ad esempio, la seguente query non è equivalente a quelle viste:

     SELECT SNome
     FROM E,S
     WHERE E.Matr=S.Matr
     AND E.CC <> 'C323'

13                                           Esercizi di interrogazioni complesse (II parte)
DB Esami – Query nidificate (divisione)
     Studenti che hanno sostenuto tutti gli esami relativi a corsi del 
     docente 624

     E’ utile riformulare la query:

     Studenti per i quali non esiste alcun corso del docente 624 di 
     cui non hanno sostenuto l'esame 




14                                         Esercizi di interrogazioni complesse (II parte)
DB Esami – Query nidificate (divisione)
     Studenti per i quali non esiste alcun corso del docente 624 di cui non 
     hanno sostenuto l'esame

     SELECT *
     FROM S
     WHERE NOT EXISTS
        (SELECT *
         FROM C
         WHERE CD='624'
         AND NOT EXISTS
                (SELECT *
                 FROM E
                 WHERE E.Matr=S.Matr
                 AND E.CC=C.CC))

15                                           Esercizi di interrogazioni complesse (II parte)

Contenu connexe

Similaire à C6es (7)

C4es
C4esC4es
C4es
 
Ces
CesCes
Ces
 
C3 Ddl1
C3 Ddl1C3 Ddl1
C3 Ddl1
 
C4 Sql1
C4 Sql1C4 Sql1
C4 Sql1
 
Basi Di Dati 05
Basi Di Dati 05Basi Di Dati 05
Basi Di Dati 05
 
Basi Di Dati 03
Basi Di Dati 03Basi Di Dati 03
Basi Di Dati 03
 
Sql 1
Sql 1Sql 1
Sql 1
 

Plus de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

Plus de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

C6es

  • 2. DB Mobili Articoli (Art_Cod, Cat_Cod, Art_Descrizione, Art_Prezzo, Art_IVA,  Art_Spese_Trasporto) FK: Cat_Cod REFERENCES Categorie Categorie (Cat_Cod, Cat_Descrizione) Componenti (Com_Cod, Com_Descrizione, Com_Costo, Lab_Cod) FK: Lab_Cod REFERENCES Laboratori Laboratori (Lab_Cod, Lab_Indirizzo, Lab_Citta, Lab_Telefono) Ordini (Ord_Cod, Neg_Cod, Ord_Data) FK:  Neg_Cod REFERENCES Negozi Negozi (Neg_Cod, Neg_Nome, Neg_Indirizzo, Neg_Citta, Neg_Telefono) CompArt (Art_Cod, Com_Cod, CompArt_Qta) FK: Art_Cod REFERENCES Articoli FK: Com_Cod REFERENCES Componenti OrdArt (Ord_Cod, Art_Cod, OrdArt_Qta) FK: Ord_Cod REFERENCES Ordini FK: Art_Cod REFERENCES Articoli 2 Esercizi di interrogazioni complesse (II parte)
  • 3. Ordini Ord_Cod Neg_Cod DB Mobili Ord_Data OrdArt Negozi Ord_Cod Neg_Cod Art_Cod Neg_Nome OrdArt_Qta Neg_Indirizzo Articoli Neg_Citta Neg_Telefono Art_Cod Cat_Cod Art_Descrizione Categorie Art_Prezzo Art_IVA Cat_Cod Art_Spese_Trasporto Cat_Descrizione CompArt Art_Cod Laboratori Com_Cod CompArt_Qta Lab_Cod Lab_Indirizzo Componenti Lab_Citta Lab_Telefono Com_Cod Com_Descrizione Com_Costo 3 Esercizi di interrogazioni complesse (II parte) Lab_Cod
  • 4. DB Mobili – Query binarie I codici degli ordini del negozio con codice 123 e quelli in cui  vengono richiesti più di 10 pezzi dello stesso articolo SELECT Ord_Cod FROM Ordini WHERE Neg_Cod = '123' UNION SELECT Ord_Cod FROM OrdArt WHERE OrdArt_Qta > 10 4 Esercizi di interrogazioni complesse (II parte)
  • 5. DB Mobili – Query nidificate I componenti meno utilizzati nelle composizioni, ovvero che  compaiono meno della media nella composizione dei vari  articoli SELECT DISTINCT Com_Cod FROM CompArt WHERE CompArt_Qta < (SELECT AVG(CompArt_Qta) FROM CompArt) 5 Esercizi di interrogazioni complesse (II parte)
  • 6. DB Mobili – Query nidificate Gli articoli per cui non vi sono ordini  SELECT * FROM Articoli WHERE NOT EXISTS ( SELECT *  FROM OrdArt WHERE OrdArt.Art_Cod = Articoli.Art_Cod) 6 Esercizi di interrogazioni complesse (II parte)
  • 7. DB Mobili – Query nidificate Per il componente “ANTA”, la differenza rispetto al costo medio  dei componenti  SELECT (Com_Costo ‐ (SELECT AVG(Com_Costo) FROM Componenti) ) AS Differenza FROM Componenti WHERE Com_Descrizione ='ANTA' 7 Esercizi di interrogazioni complesse (II parte)
  • 8. DB Esami S (Matr, SNome, Citta, ACorso) C (CC, CNome, CD) FK:  CD REFERENCES D S D (CD, CNome, Citta) Matr SNome    Citta    Acorso E (Matr, CC, Data, Voto) E FK: Matr REFERENCES S Matr CC Data    Voto  FK: CC REFERENCES C C CC CNome CD D CD CNome Citta 8 Esercizi di interrogazioni complesse (II parte)
  • 9. DB Esami – Query binarie Città di studenti ma non di docenti  SELECT Citta FROM S EXCEPT SELECT Citta FROM D SELECT Citta FROM S WHERE Citta NOT IN ( SELECT Citta FROM D) 9 Esercizi di interrogazioni complesse (II parte)
  • 10. DB Esami – Query nidificate Studenti con anno di corso più basso SELECT * FROM S WHERE ACorso <= ALL (SELECT ACorso FROM S) 10 Esercizi di interrogazioni complesse (II parte)
  • 11. DB Esami – Query nidificate Nome degli studenti che hanno sostenuto l'esame del corso C323 SELECT SNome FROM S WHERE Matr IN (SELECT Matr FROM E WHERE CC='C323') Questa query è riscrivibile in una query semplice: SELECT SNome FROM E,S WHERE E.Matr=S.Matr AND E.CC='C323' 11 Esercizi di interrogazioni complesse (II parte)
  • 12. DB Esami – Query nidificate Nome degli studenti che non hanno sostenuto l'esame del corso  C323 SELECT SNome FROM S WHERE Matr NOT IN (SELECT Matr FROM E WHERE CC='C323') SELECT SNome FROM S WHERE Matr <> ALL (SELECT Matr FROM E WHERE CC='C323') 12 Esercizi di interrogazioni complesse (II parte)
  • 13. DB Esami – Query nidificate SELECT SNome FROM S WHERE NOT EXISTS   (   SELECT * FROM E WHERE E.Matr=S.Matr AND E.CC='C323') NOTA: nessuna delle varianti viste è riscrivibile come query semplice.  Ad esempio, la seguente query non è equivalente a quelle viste: SELECT SNome FROM E,S WHERE E.Matr=S.Matr AND E.CC <> 'C323' 13 Esercizi di interrogazioni complesse (II parte)
  • 14. DB Esami – Query nidificate (divisione) Studenti che hanno sostenuto tutti gli esami relativi a corsi del  docente 624 E’ utile riformulare la query: Studenti per i quali non esiste alcun corso del docente 624 di  cui non hanno sostenuto l'esame  14 Esercizi di interrogazioni complesse (II parte)
  • 15. DB Esami – Query nidificate (divisione) Studenti per i quali non esiste alcun corso del docente 624 di cui non  hanno sostenuto l'esame SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE CD='624' AND NOT EXISTS (SELECT * FROM E WHERE E.Matr=S.Matr AND E.CC=C.CC)) 15 Esercizi di interrogazioni complesse (II parte)