Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-01-2009, 15:23   #1
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
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)
1) Devo esprimere la seguente interrogazione:
Quote:
Trovare i reparti per cui il numero dei pazienti con trattamento intensivo ricoverati dal 1° novembre 2008 è maggiore di 10.
Io l'ho fatta così:
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")
è corretta?

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")
Devo esprimerla in algebra relazionale e se nn è possibile dire il motivo, io ho fatto così xò nn sono sicuro ke sia giusto:
Codice:
π cognome, nome ((σ trattamento="intensivo" CARTELLE) join PAZIENTI)
mi dite se è corretta, anke se ho forti dubbi ke lo sia!!

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
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2009, 15:47   #2
shinya
Senior Member
 
L'Avatar di shinya
 
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.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2009, 20:13   #3
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Quote:
Originariamente inviato da shinya Guarda i messaggi
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.
Guarda è il testo di un compitino dell'esame di novembre, quindi lo schema l'ha fatto il prof...
__________________
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
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2009, 20:24   #4
CozzaAmara
Senior Member
 
L'Avatar di CozzaAmara
 
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")
Non credo si possa usare una funzione interna come count() dopo la clausola having.
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")
__________________
CozzaAmara è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2009, 20:26   #5
CozzaAmara
Senior Member
 
L'Avatar di CozzaAmara
 
Iscritto dal: Nov 2008
Messaggi: 411
Quote:
Originariamente inviato da shinya Guarda i messaggi
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.
In effetti.
__________________
CozzaAmara è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2009, 09:55   #6
shinya
Senior Member
 
L'Avatar di shinya
 
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
Posto che non sono sicuro della correttezza del mio sql, se dovesse essere necessario fare un cross-join per tirare fuori il risultato, sarebbe un buon segno che lo schema fa schifo.
shinya è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
Le analisi di ALMA sulla cometa interste...
La missione cinese Tianwen-3 per portare...
Un satellite di HEO Space ha catturato u...
Mini LED 144Hz a prezzo folle: questo Hi...
Novità per Fortinet: arrivano For...
Volkswagen e Xpeng, il SUV è real...
Volkswagen ribattezza ID.3 e le dà un mo...
Aruba rende disponibile VMware Hosted Pr...
Questa Olympus da 20 MP con stabilizzazi...
Il nuovo dispositivo di Rabbit si chiama...
'Se avete RAM, siamo pronti ad acquistar...
Veeam corregge diverse vulnerabilit&agra...
MacBook Neo segna una svolta per Apple: ...
Polestar pubblica il report LCA di Poles...
Il rame non basta più: NVIDIA, AM...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v