Your SlideShare is downloading. ×
C6es
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

C6es

503
views

Published on

Published in: Travel, Business

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
503
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Basi di Dati Esercizi di interrogazioni complesse (II parte)
  • 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)

×