Top Banner
Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata [email protected] Corso di Gestione dei Dati e della Conoscenza
32

Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata [email protected]

Feb 18, 2019

Download

Documents

vunhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

EsercitazioneDall’Algebra Relazionale a SQL

De Cao Diego , Roberto Basili

Università di Roma Tor [email protected]

Corso di Gestione dei Dati e della Conoscenza

Page 2: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

DescrizioneUna catena di farmacie decide di automatizzare la gestione dei propriclienti e vendite ed è necessario il progetto del database di riferimento.La prima discussione con il gruppo responsabile presso l’aziendaconsente di derivare le seguenti informazioni parziali:

Page 3: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Specifiche:

Nella catena di farmacie sono incluse più di cento farmacie, sparseper il territorio. Esse distribuiscono prodotti di numerose compagniefarmaceutiche con cui hanno contratti a lungo termine, supervisionatida un impiegato per ogni farmacia.Ogni farmacia dovrebbe documentare/memorizzare i dati delleprescrizioni.Ogni paziente può, presentando la prescrizione di un medico,accedere ad un medicinale. La vendita di tale medicinale, a frontedella prescrizione medica, va rigistrata col suo ammontare. I mediciche fanno prescrizioni vanno registrati per poter essere contattati almomento o dopo la vendita.

Page 4: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

ER

Page 5: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Schema Logico

EntitàPaziente(CF:string , Nome:String , Età:int , Indirizzo:string, CFMed:string)

Medico(CF:string , Nome:String , AnzianitàServizio:int , Spec:string)

Farmacia(idF:int , Nome:string , Telefono:String , Indirizzo:string)

CompagniaFarmaceutica(idCF:int , Nome:string , Telefono:String)

Commesso(CF:string , Nome:string, idF:int)

Medicinale(Nome:string , idCF:int , Formula:string)

RelazioniPrescrive(idPr:int ,CFPaz:string , CFMed:string, NomeMedicin:String , idCF:int , Data:data ,Quantità:int)

Distribuisce(idF:int , NomeMedicin:String , idCF:int , Prezzo:int)

Contratto(idF:int , idCF:int , CFImp:string , Inizio:data , Fine:data ,Testo:string)

Vende(idF:int , idPr:int)

Page 6: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Schema Logico

EntitàPaziente(CF:string , Nome:String , Età:int , Indirizzo:string, CFMed:string)

Medico(CF:string , Nome:String , AnzianitàServizio:int , Spec:string)

Farmacia(idF:int , Nome:string , Telefono:String , Indirizzo:string)

CompagniaFarmaceutica(idCF:int , Nome:string , Telefono:String)

Commesso(CF:string , Nome:string, idF:int)

Medicinale(Nome:string , idCF:int , Formula:string)

RelazioniPrescrive(idPr:int ,CFPaz:string , CFMed:string, NomeMedicin:String , idCF:int , Data:data ,Quantità:int)

Distribuisce(idF:int , NomeMedicin:String , idCF:int , Prezzo:int)

Contratto(idF:int , idCF:int , CFImp:string , Inizio:data , Fine:data ,Testo:string)

Vende(idF:int , idPr:int)

Page 7: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Creazione Entità Farmacia

CREATE TABLE ‘Farmacia‘ (‘idF‘ int(11) NOT NULL auto_increment,‘Nome‘ varchar(255) NOT NULL,‘Telefono‘ varchar(20) NOT NULL,‘Indirizzo‘ varchar(255) NOT NULL,PRIMARY KEY (‘idF‘)

) ENGINE=InnoDB

Page 8: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Creazione Entità Medico

CREATE TABLE ‘Medico‘ (‘CF‘ varchar(18) NOT NULL,‘Nome‘ varchar(255) NOT NULL,‘AnzServizio‘ int(11) NOT NULL,‘Specializzazione‘ varchar(255) NOT NULL,PRIMARY KEY (‘CF‘)

) ENGINE=InnoDB

Page 9: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Creazione Entità Paziente

CREATE TABLE ‘Paziente‘ (‘CF‘ varchar(18) NOT NULL,‘Nome‘ varchar(255) NOT NULL,‘Eta‘ int(11) NOT NULL,‘Indirizzo‘ varchar(255) NOT NULL,‘CFMed‘ varchar(18) NOT NULL,PRIMARY KEY (‘CF‘),FOREIGN KEY (‘CFMed‘)REFERENCES ‘Medico‘ (‘CF‘)ON DELETE CASCADEON UPDATE CASCADE

) ENGINE=InnoDB

Page 10: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Creazione Relazione Prescrive

CREATE TABLE ‘Prescrive‘ (‘idPR‘ int(11) NOT NULL auto_increment,‘CFPaz‘ varchar(18) NOT NULL,‘CFMed‘ varchar(18) NOT NULL,‘NomeMedicinale‘ varchar(255) NOT NULL,‘idCF‘ int(11) NOT NULL,‘data‘ date NOT NULL,‘Quantita‘ int(11) NOT NULL,PRIMARY KEY (‘idPR‘),UNIQUE (‘CFPaz‘,‘CFMed‘,‘NomeMedicinale‘,‘idCF‘),FOREIGN KEY (‘CFPaz‘) REFERENCES ‘Paziente‘ (‘CF‘)ON DELETE CASCADEON UPDATE CASCADE,

FOREIGN KEY (‘CFMed‘) REFERENCES ‘Medico‘ (‘CF‘)ON DELETE CASCADEON UPDATE CASCADE,

FOREIGN KEY (‘NomeMedicinale‘,‘idCF‘)REFERENCES ‘Medicinale‘ (‘Nome‘, ‘idCF‘ )ON DELETE CASCADEON UPDATE CASCADE

) ENGINE=InnoDB

Page 11: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Queries

Quale è il numero di telefono della Farmacia X?

Quali medicinali sono stati prescritti al paziente X?

Quale farmacia vende il medicinale X della Casa FarmaceuticaY?

Quali medici hanno prescritto il medicinale X della CasaFarmaceutica Y?

Quali medicinali sono venduti dalla farmacia X ma non dalla Y?

Quale è il prezzo di vendita minimo del Medicinale X della CasaFarmaceutica Y

Quali Farmacie vendono al prezzo più basso il Medicinale Xdella Casa Farmaceutica Y

Page 12: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale è il numero di telefono della Farmacia X?

πtelefono(σX(Farmacia))

Page 13: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale è il numero di telefono della Farmacia X?

πtelefono(σX(Farmacia))

Page 14: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale è il numero di telefono della Farmacia X?

πtelefono(σX(Farmacia))

SELECT telefonoFROM FarmaciaWHERE nome = ’X’

Page 15: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale è il numero di telefono della Farmacia X?

πtelefono(σX(Farmacia))

Uso dell’operatore LIKE:

SELECT telefonoFROM FarmaciaWHERE nome LIKE ’X’

Page 16: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale è il numero di telefono della Farmacia X?

πtelefono(σX(Farmacia))

LIKE usato sulle stringhe permette match parziali attraverso l’uso di wildcards % e _ :% : Corrisponde ad un qualsiasi carattere senza limiti di ripetizione (anche 0 volte)

_ : Corrisponde ad un qualsiasi carattere ma che occorre esattamente una volta

SELECT telefonoFROM FarmaciaWHERE nome LIKE ’%X_’

Page 17: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono stati prescritti al paziente X?

πMedicinale.Nome,CF.Nome(σX(Paziente)on Prescrive on (Medicinale onCF))

Versione senza l’uso del costrutto JOIN:

SELECT ‘Medicinale‘.‘Nome‘, ‘CompagniaFarmaceutica‘.‘Nome‘FROM ‘Medicinale‘, ‘CompagniaFarmaceutica‘,

‘Paziente‘, ‘Prescrive‘WHERE ‘Paziente‘.‘CF‘ = ’X’ AND

‘Medicinale‘.‘idCF‘ = ‘CompagniaFarmaceutica‘.‘idCF‘ AND‘Paziente‘.‘CF‘ = ‘Prescrive‘.‘CFPaz‘ AND‘Prescrive‘.‘idCF‘ = ‘CompagniaFarmaceutica‘.‘idCF‘ AND‘Prescrive‘.‘NomeMedicinale‘ = ‘Medicinale‘.‘Nome‘

Page 18: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono stati prescritti al paziente X?

πMedicinale.Nome,CF.Nome(σX(Paziente)on Prescrive on (Medicinale onCF))

Versione senza l’uso del costrutto JOINRiscrittura dei Nomi:

SELECT ‘M‘.‘Nome‘ AS ‘Nome_Farmaco‘,‘CF‘.‘Nome‘ AS ‘Nome_Compagnia‘

FROM ‘Medicinale‘ AS ‘M‘, ‘CompagniaFarmaceutica‘ AS ‘CF‘,‘Paziente‘ AS ‘P‘, ‘Prescrive‘ AS ‘Pr‘

WHERE ‘P‘.‘CF‘ = ’X’ AND‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘ AND‘P‘.‘CF‘ = ‘Pr‘.‘CFPaz‘ AND‘Pr‘.‘idCF‘ = ‘CF‘.‘idCF‘ AND‘Pr‘.‘NomeMedicinale‘ = ‘M‘.‘Nome‘ AND‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘

Page 19: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono stati prescritti al paziente X?

πMedicinale.Nome,CF.Nome(σX(Paziente)on Prescrive on (Medicinale onCF))

Versione con l’uso del costrutto JOIN:

SELECT ‘M‘.‘Nome‘ AS ‘Nome_Farmaco‘,‘CF‘.‘Nome‘ AS ‘Nome_Compagnia‘

FROM ‘Paziente‘ AS ‘P‘JOIN ‘Prescrive‘ AS ‘Pr‘ ON ‘P‘.‘CF‘ = ‘Pr‘.‘CFPaz‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘

ON ‘Pr‘.‘idCF‘ = ‘CF‘.‘idCF‘JOIN ‘Medicinale‘ AS ‘M‘

ON Pr‘.‘NomeMedicinale‘ = ‘M‘.‘Nome‘AND ‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘,

WHERE ‘P‘.‘CF‘ = ’X’

Page 20: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale farmacia vende il medicinale X della Casa Farmaceutica Y?

πFarmacia.Nome(σX(Medicinale)on σY(CF)on (Farmacia onDistribuisce))

Page 21: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quale farmacia vende il medicinale X della Casa Farmaceutica Y?

πFarmacia.Nome(σX(Medicinale)on σY(CF)on (Farmacia onDistribuisce))

SELECT ‘F‘.‘Nome‘ AS ‘Nome_Farmacia‘FROM ‘Medicinale‘ AS ‘M‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘

ON ‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘JOIN ‘Distribuisce‘ AS ‘D‘

ON ‘M‘.‘Nome‘ = ‘D‘.‘NomeMedicinale‘AND ‘M‘.‘idCF‘ = ‘D‘.‘idCF‘

JOIN ‘Farmacia‘ AS ‘F‘ON ‘F‘.‘idF‘ = ‘D‘.‘idF‘

WHERE ‘M‘.‘Nome‘ LIKE ’X’AND ‘CF‘.‘Nome‘ LIKE ’Y’

Page 22: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medici hanno prescritto il medicinale X della CasaFarmaceutica Y?

πMedico.Nome((σX(Medicinale)on σY(CF)on Prescrive on Medico)

Page 23: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medici hanno prescritto il medicinale X della CasaFarmaceutica Y?

πMedico.Nome((σX(Medicinale)on σY(CF)on Prescrive on Medico)

SELECT ‘M‘.‘Nome‘ AS ‘Nome_Medico‘FROM ‘Medicinale‘ AS ‘M‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘

ON ‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘JOIN ‘Prescrive‘ AS ‘P‘

ON ‘M‘.‘Nome‘ = ‘P‘.‘NomeMedicinale‘AND ‘M‘.‘idCF‘ = ‘P‘.‘idCF‘

JOIN ‘Medico‘ AS ‘Med‘ON ‘Med‘.‘CF‘ = ‘P‘.‘CFMed‘

WHERE ‘M‘.‘Nome‘ LIKE ’X’AND ‘CF‘.‘Nome‘ LIKE ’Y’

Page 24: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono venduti dalla farmacia X ma non dalla Y?ρ(R1,πMd.Nome,CF.Nome(σX(Farmacia)on Distribuisce on Medicinale on CF))ρ(R2,πMd.Nome,CF.Nome(σY(Farmacia)on Distribuisce on Medicinale on CF))

R1−R2

Page 25: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono venduti dalla farmacia X ma non dalla Y?ρ(R1,πMd.Nome,CF.Nome(σX(Farmacia)on Distribuisce on Medicinale on CF))ρ(R2,πMd.Nome,CF.Nome(σY(Farmacia)on Distribuisce on Medicinale on CF))

R1−R2

CREATE TEMPORARY TABLE R1 (SELECT ‘M‘.‘Nome‘ AS ‘Nome_Medicinale‘,

‘CF‘.‘Nome‘ AS ‘Nome_Compagnia‘FROM ‘Medicinale‘ AS ‘M‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘

ON ‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘JOIN ‘Distribuisce‘ AS ‘D‘

ON ‘M‘.‘Nome‘ = ‘D‘.‘NomeMedicinale‘AND ‘M‘.‘idCF‘ = ‘D‘.‘idCF‘

JOIN ‘Farmacia‘ AS ‘F‘ON ‘F‘.‘idF‘ = ‘D‘.‘idF‘

WHERE ‘F‘.‘Nome‘ LIKE ’X’)

Page 26: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono venduti dalla farmacia X ma non dalla Y?ρ(R1,πMd.Nome,CF.Nome(σX(Farmacia)on Distribuisce on Medicinale on CF))ρ(R2,πMd.Nome,CF.Nome(σY(Farmacia)on Distribuisce on Medicinale on CF))

R1−R2

CREATE TEMPORARY TABLE R2 (SELECT ‘M‘.‘Nome‘ AS ‘Nome_Medicinale‘,

‘CF‘.‘Nome‘ AS ‘Nome_Compagnia‘FROM ‘Medicinale‘ AS ‘M‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘

ON ‘M‘.‘idCF‘ = ‘CF‘.‘idCF‘JOIN ‘Distribuisce‘ AS ‘D‘

ON ‘M‘.‘Nome‘ = ‘D‘.‘NomeMedicinale‘AND ‘M‘.‘idCF‘ = ‘D‘.‘idCF‘

JOIN ‘Farmacia‘ AS ‘F‘ON ‘F‘.‘idF‘ = ‘D‘.‘idF‘

WHERE ‘F‘.‘Nome‘ LIKE ’Y’)

Page 27: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Dall’algebra relazionale a SQL

Quali medicinali sono venduti dalla farmacia X ma non dalla Y?ρ(R1,πMd.Nome,CF.Nome(σX(Farmacia)on Distribuisce on Medicinale on CF))ρ(R2,πMd.Nome,CF.Nome(σY(Farmacia)on Distribuisce on Medicinale on CF))

R1−R2

SELECT *FROM ‘R1‘WHERE (‘Nome_Medicinale‘, ‘Nome_Compagnia‘) NOT IN (

SELECT *FROM ‘R2‘)

Page 28: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Operatori di Aggregazione

Quale è il prezzo di vendita minimo del Medicinale X della CasaFarmaceutica Y

Page 29: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Operatori di Aggregazione

Quale è il prezzo di vendita minimo del Medicinale X della CasaFarmaceutica YSELECT MIN(‘D‘.‘Prezzo‘)FROM ‘Distribuisce‘ AS ‘D‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘ ON ‘CF‘.‘idCF‘ = ‘D‘.‘idCF‘WHERE ‘CF‘.‘Nome‘ LIKE ’Y’ AND ‘D‘.‘NomeMedicinale‘ LIKE ’X’GROUP BY ‘D‘.‘NomeMedicinale‘

Page 30: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Operatori di Aggregazione

Quali Farmacie vendono al prezzo più basso il Medicinale X dellaCasa Farmaceutica Y

Page 31: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Operatori di Aggregazione

Quali Farmacie vendono al prezzo più basso il Medicinale X dellaCasa Farmaceutica YSELECT ‘F‘.‘Nome‘ AS ‘Nome_Faramacia‘FROM ‘Distribuisce‘ AS ‘D‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘ ON ‘CF‘.‘idCF‘ = ‘D‘.‘idCF‘JOIN ‘Farmacia‘ AS ‘F‘ ON ‘F‘.‘idF‘ = ‘D‘.‘idF‘WHERE ‘CF‘.‘Nome‘ LIKE ’Y’ AND ‘D‘.‘NomeMedicinale‘ LIKE ’X’ AND‘D‘.‘Prezzo‘ = (SELECT MIN(‘D‘.‘Prezzo‘) AS Prezzo

FROM ‘Distribuisce‘ AS ‘D‘JOIN ‘CompagniaFarmaceutica‘ AS ‘CF‘

ON ‘CF‘.‘idCF‘ = ‘D‘.‘idCF‘WHERE ‘CF‘.‘Nome‘ LIKE ’X’ AND

‘D‘.‘NomeMedicinale‘ LIKE ’X’GROUP BY ‘D‘.‘NomeMedicinale‘ ) )

Page 32: Esercitazione Dall'Algebra Relazionale a SQL · Esercitazione Dall’Algebra Relazionale a SQL De Cao Diego , Roberto Basili Università di Roma Tor Vergata decao@info.uniroma2.it

ER Farmacie SQL

Mysql Download

http://dev.mysql.com/downloads/mysql/

http://dev.mysql.com/downloads/gui-tools/5.0.html