|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Senior Member
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
|
[SQL] 2 esercizi!!
Ho il seguente schema:
Codice:
pazienti (pid, nome, cognome, indirizzo) cartelle (pid, mid, diagnosi, trattamento) degenze (pid, inizio, fine, reparto) medici (mid, cognome_medico, qualifica) Quote:
Codice:
select distinct reparto from cartelle c, degenze d where c.pid = (select d.pid from degenze d where c.trattamento = "intensivo" group by d.pid having count (reparto) > 10 and d.inizio = "1° novembre 2008") 2) Facendo riferimento allo schema di sopra, ho la seguente interrogazione: Codice:
select distinct cognome, nome from pazienti where pid in (select pid from cartelle where trattamento = "intensivo") Codice:
π cognome, nome ((σ trattamento="intensivo" CARTELLE) join PAZIENTI) Grazie mille
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale |
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Sull'algebra relazionale non ti rispondo perchè sinceramente non me la ricordo più e potrei dire stronzate.
Per la prima domanda invece... ma sono io o quello schema non ha nessun senso?? Cioè, che relazione ci sarebbe tra cartelle e degenze? E in generale, che relazioni dovrebbero avere tra loro quelle 4 tabelle mess li cosi? E i reparti perchè non hanno una tabella tutta loro? Ma è il prof che ha fatto sta roba? Tanto più che la query è abbastanza assurda. Fai il prodotto cartesiano di due tabelle e poi tenti di prendere fuori dei valori... a parte l'inefficienza della cosa, mi sembra ci sia un problema a monte.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
|
Quote:
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2008
Messaggi: 411
|
Codice:
select distinct reparto from cartelle c, degenze d where c.pid = (select d.pid from degenze d where c.trattamento = "intensivo" group by d.pid having count (reparto) > 10 and d.inizio = "1° novembre 2008") Se non erro devi mettere count(reparto) tra i campi recuperati da SELECT (preferibilmente con un alias) e usare l'alias stesso con having. Codice:
select distinct reparto from cartelle c, degenze d where c.pid = (select d.pid, count (reparto) as tot from degenze d where c.trattamento = "intensivo" group by d.pid having tot > 10 and d.inizio = "1° novembre 2008")
__________________
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2008
Messaggi: 411
|
In effetti.
__________________
![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Va beh ho capito ora il senso di quello schema... scusate. "pid" sarebbe "pazienti id" ed è usato come parte della chiave primaria anche in cartelle e degenze.
A parte che avrei qualcosa da dire a chi ha fatto questo schema, e che se un mio collega tenta di chiedere al dba di mettere in produzione una roba fatta cosi lo strozzo, e che cmq non credo sia chiarissima la relazione che ci dovrebbe essere tra cartelle e degenze, io scriverei una roba cosi, che però non so se funzioni... bisognerebbe provare con un pò di dati. Codice:
select d.reparto, count(*) as pazienti from cartelle c join degenze d on c.pid = d.pid where d.inizio >= "1 nov 2008" and c.diagnosi = "intensivo" group by d.reparto having count(*) > 10
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:30.