basi dati c6 es

2
BasidiDati Esercizidiinterrogazionicomplesse(IIparte) DBMobili Articoli(Art_Cod,Cat_Cod,Art_Descrizione,Art_Prezzo,Art_IVA, Art_Spese_Trasporto) FK:Cat_Cod REFERENCESCategorie Categorie(Cat_Cod,Cat_Descrizione) Componenti(Com_Cod,Com_Descrizione,Com_Costo,Lab_Cod) FK:Lab_Cod REFERENCESLaboratori Laboratori(Lab_Cod,Lab_Indirizzo,Lab_Citta,Lab_Telefono) Ordini(Ord_Cod,Neg_Cod,Ord_Data) FK:Neg_Cod REFERENCESNegozi Negozi(Neg_Cod,Neg_Nome,Neg_Indirizzo,Neg_Citta,Neg_Telefono) CompArt (Art_Cod,Com_Cod,CompArt_Qta) FK:Art_Cod REFERENCESArticoli FK:Com_Cod REFERENCESComponenti OrdArt (Ord_Cod,Art_Cod,OrdArt_Qta) FK:Ord_Cod REFERENCESOrdini FK:Art_Cod REFERENCESArticoli 2 Esercizidiinterrogazionicomplesse(IIparte) DBMobili Art_Cod Cat_Cod Art_Descrizione Art_Prezzo Art_IVA Art_Spese_Trasporto Articoli Com_Cod Com_Descrizione Com_Costo Lab_Cod Componenti Ord_Cod Neg_Cod Ord_Data Ordini Neg_Cod Neg_Nome Neg_Indirizzo Neg_Citta Neg_Telefono Negozi Cat_Cod Cat_Descrizione Categorie Lab_Cod Lab_Indirizzo Lab_Citta Lab_Telefono Laboratori Art_Cod Com_Cod CompArt_Qta CompArt Ord_Cod Art_Cod OrdArt_Qta OrdArt 3 Esercizidiinterrogazionicomplesse(IIparte) DBMobili– Querybinarie Icodicidegliordinidelnegozioconcodice123equelliincui vengonorichiestipiùdi10pezzidellostessoarticolo SELECTOrd_Cod FROMOrdini WHERENeg_Cod ='123' UNION SELECTOrd_Cod FROMOrdArt WHEREOrdArt_Qta >10 4 Esercizidiinterrogazionicomplesse(IIparte) DBMobili– Querynidificate Icomponentimenoutilizzatinellecomposizioni,ovveroche compaionomenodellamedianellacomposizionedeivari articoli SELECTDISTINCTCom_Cod FROMCompArt WHERECompArt_Qta < (SELECTAVG(CompArt_Qta) FROMCompArt) 5 Esercizidiinterrogazionicomplesse(IIparte) DBMobili– Querynidificate Gliarticolipercuinonvisonoordini SELECT* FROMArticoli WHERENOTEXISTS (SELECT* FROMOrdArt WHEREOrdArt.Art_Cod =Articoli.Art_Cod) 6 Esercizidiinterrogazionicomplesse(IIparte) DBMobili– Querynidificate Perilcomponente“ANTA”,ladifferenzarispettoalcostomedio deicomponenti SELECT(Com_Costo (SELECTAVG(Com_Costo) FROMComponenti))ASDifferenza FROMComponenti WHERECom_Descrizione ='ANTA' 7 Esercizidiinterrogazionicomplesse(IIparte) DBEsami S(Matr,SNome,Citta,ACorso) C(CC,CNome,CD) FK:CD REFERENCESD D(CD,CNome,Citta) E(Matr,CC,Data,Voto) FK:Matr REFERENCESS FK:CCREFERENCESC Matr SNomeCittaAcorso S CC CNome CD C CD CNome Citta D Matr CC DataVoto E 8 Esercizidiinterrogazionicomplesse(IIparte) DBEsami– Querybinarie Cittàdistudentimanondidocenti SELECTCitta FROMS EXCEPT SELECTCitta FROMD SELECTCitta FROMS WHERECitta NOTIN(SELECTCitta FROMD) 9 Esercizidiinterrogazionicomplesse(IIparte)

Upload: bombers-falcoman

Post on 06-Jul-2015

202 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Basi Dati C6 Es

Basi�di�Dati

Esercizi�di�interrogazioni�complesse�(II�parte)

DB�MobiliArticoli�(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�LaboratoriLaboratori�(Lab_Cod,�Lab_Indirizzo,�Lab_Citta,�Lab_Telefono)Ordini�(Ord_Cod,�Neg_Cod,�Ord_Data)

FK:��Neg_Cod REFERENCES�NegoziNegozi�(Neg_Cod,�Neg_Nome,�Neg_Indirizzo,�Neg_Citta,�Neg_Telefono)CompArt (Art_Cod,�Com_Cod,�CompArt_Qta)

FK:�Art_Cod REFERENCES�ArticoliFK:�Com_Cod REFERENCES�Componenti

OrdArt (Ord_Cod,�Art_Cod,�OrdArt_Qta)FK:�Ord_Cod REFERENCES�OrdiniFK:�Art_Cod REFERENCES�Articoli

2 Esercizi�di�interrogazioni�complesse�(II�parte)

DB�Mobili

Art_CodCat_CodArt_DescrizioneArt_PrezzoArt_IVAArt_Spese_Trasporto

Articoli

Com_CodCom_DescrizioneCom_CostoLab_Cod

Componenti

Ord_CodNeg_CodOrd_Data

Ordini

Neg_CodNeg_NomeNeg_IndirizzoNeg_CittaNeg_Telefono

Negozi

Cat_CodCat_Descrizione

Categorie

Lab_CodLab_IndirizzoLab_CittaLab_Telefono

LaboratoriArt_CodCom_CodCompArt_Qta

CompArt

Ord_CodArt_CodOrdArt_Qta

OrdArt

3 Esercizi�di�interrogazioni�complesse�(II�parte)

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_CodFROM�OrdiniWHERE�Neg_Cod =�'123'

UNIONSELECT�Ord_CodFROM�OrdArtWHERE�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_CodFROM�CompArtWHERE�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�ArticoliWHERE�NOT�EXISTS

(�SELECT�*�FROM�OrdArtWHERE�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�ComponentiWHERE�Com_Descrizione ='ANTA'

7 Esercizi�di�interrogazioni�complesse�(II�parte)

DB�EsamiS�(Matr,�SNome,�Citta,�ACorso)C�(CC,�CNome,�CD)

FK:��CD REFERENCES�D

D�(CD,�CNome,�Citta)E�(Matr,�CC,�Data,�Voto)

FK:�Matr REFERENCES�S

FK:�CC�REFERENCES�C

Matr SNome����Citta����Acorso

S

CC CNome CDC

CD CNome CittaD

Matr CC Data����Voto�E

8 Esercizi�di�interrogazioni�complesse�(II�parte)

DB�Esami�– Query�binarie� Città�di�studenti�ma�non�di�docenti�

SELECT�Citta FROM�SEXCEPTSELECT�Citta FROM�D

SELECT�CittaFROM�SWHERE�Citta NOT�IN�(�SELECT�Citta

FROM�D)

9 Esercizi�di�interrogazioni�complesse�(II�parte)

Page 2: Basi Dati C6 Es

DB�Esami�– Query�nidificate� Studenti�con�anno�di�corso�più�basso

SELECT�*FROM�SWHERE�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�SNomeFROM�SWHERE�Matr IN�(SELECT�Matr

FROM�EWHERE�CC='C323')

Questa�query�è�riscrivibile in�una query�semplice:

SELECT�SNomeFROM�E,SWHERE�E.Matr=S.MatrAND�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�SNomeFROM�SWHERE�Matr NOT�IN�(SELECT�Matr

FROM�EWHERE�CC='C323')

SELECT�SNomeFROM�SWHERE�Matr <>�ALL�(SELECT�Matr

FROM�EWHERE�CC='C323')

12 Esercizi�di�interrogazioni�complesse�(II�parte)

DB�Esami�– Query�nidificateSELECT�SNomeFROM�SWHERE�NOT�EXISTS���(���SELECT�*

FROM�EWHERE�E.Matr=S.MatrAND�E.CC='C323')

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

SELECT�SNomeFROM�E,SWHERE�E.Matr=S.MatrAND�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�SWHERE�NOT�EXISTS

(SELECT�*FROM�CWHERE�CD='624'AND�NOT�EXISTS

(SELECT�*FROM�EWHERE�E.Matr=S.MatrAND�E.CC=C.CC))

15 Esercizi�di�interrogazioni�complesse�(II�parte)