Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2007, 17:39   #1
lucajeck
Junior Member
 
Iscritto dal: Jan 2006
Messaggi: 21
[DB] INTERROGAZIONE DIFFICILE

ciao a tutti, ho un problema con una query non riesco proprio a farla:

Io ho questo schema relazionale

Esame(nome, prezzo) //nome è chiave
Prescrizioni(codice, data, cliente, medico) //codice è chiave
Esami-Prescritti( prescrizioni, esame) //entrambi sono chiave
Cliente(cod-fisc, nome, città) //cod-fisc è chiave
Medico(cod-fisc, nome, città) //cod_fisc è chiave

Lo schema rappresenta informazioni sui clienti che si rivolgono al laboratorio per esami clinici, e sui medici che prescrivono tali indagini. Nella relazione Prescrizione sono indicati il medico, il cliente e la data di ciascuna prescrizione- In Esami-Prescritti è rappresentato l'elenco degli esami indicati in ciascuna prescrizione.

Vorrei che qualcuno mi aiutasse a formulare la seguente interrogazione in SQL:
I nomi dei clienti che hanno presentato una prescrizione contenente esami tutti dello stesso prezzo.
GRAZIE A TUTTI!! :-)
lucajeck è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2007, 19:20   #2
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Presumo che il 'codice' in Prescrizioni sia lo stesso che metti in chiave in esami-prescritti, che esame nella stessa tabella sia 'nome' in Esame, ecc...cioè che le tabelle siano legate con foreign key appropriate...questo dovrebbe andare...(non ho provato!)

Codice:
select c.nome
  from cliente c join prescrizioni p on c.cod_fisc = p.cliente
  join esami_prescritti ep on p.codice = ep.prescrizioni
  join esame e on e.nome = ep.esame
where e.prezzo = IL_PREZZO_CHE_TI_INTERESSA
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2007, 11:13   #3
lucajeck
Junior Member
 
Iscritto dal: Jan 2006
Messaggi: 21
Grazie ma..

Innanzi tutto GRAZIE MILLE PER LA RISPOSTA!!!
Tutte le tue supposizioni sono giuste, ma quando dico che voglio i nomi dei clienti che hanno presentato una prescrzione contenente esami tutti dello stesso prezzo, intendo non di un prezzo in particolare, ma che tutte i prezzi degli esami devono essere tutti uguali. E' uno dei 5 punti di un'esercizio di un'appello d'esame e non riesco proprio a risolverlo.......Grazie e buona giornata!
lucajeck è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2007, 12:51   #4
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da lucajeck
Innanzi tutto GRAZIE MILLE PER LA RISPOSTA!!!
Tutte le tue supposizioni sono giuste, ma quando dico che voglio i nomi dei clienti che hanno presentato una prescrzione contenente esami tutti dello stesso prezzo, intendo non di un prezzo in particolare, ma che tutte i prezzi degli esami devono essere tutti uguali. E' uno dei 5 punti di un'esercizio di un'appello d'esame e non riesco proprio a risolverlo.......Grazie e buona giornata!
penso allora che ci devi aggiungere una SELECT annidata con GROUP BY del tipo:

Codice:
select c.nome
  from cliente c join prescrizioni p on c.cod_fisc = p.cliente
  join esami_prescritti ep on p.codice = ep.prescrizioni
  join esame e on e.nome = ep.esame
where e.prezzo = ANY (SELECT Prezzo FROM Esame GROUP BY Prezzo) 
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 10:49   #5
lucajeck
Junior Member
 
Iscritto dal: Jan 2006
Messaggi: 21
grazie

grazie mille, pomeriggio lo provo :-)

buona giornata
lucajeck è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 13:37   #6
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Frank1962 Guarda i messaggi
penso allora che ci devi aggiungere una SELECT annidata con GROUP BY del tipo:

Codice:
select c.nome
  from cliente c join prescrizioni p on c.cod_fisc = p.cliente
  join esami_prescritti ep on p.codice = ep.prescrizioni
  join esame e on e.nome = ep.esame
where e.prezzo = ANY (SELECT Prezzo FROM Esame GROUP BY Prezzo) 
Codice:
SELECT DISTINCT Prezzo FROM Esame
no ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 14:08   #7
guldo76
Senior Member
 
L'Avatar di guldo76
 
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2598
Quote:
Originariamente inviato da Frank1962 Guarda i messaggi
penso allora che ci devi aggiungere una SELECT annidata con GROUP BY del tipo:

Codice:
select c.nome
  from cliente c join prescrizioni p on c.cod_fisc = p.cliente
  join esami_prescritti ep on p.codice = ep.prescrizioni
  join esame e on e.nome = ep.esame
where e.prezzo = ANY (SELECT Prezzo FROM Esame GROUP BY Prezzo)
Anche scrivendola come dice trallallero, a cosa serve?!?
Il prezzo, preso dalla tabella Esame, sarà sempre uguale a qualunque prezzo della tabella Esame! Non credete?!?

IMHO:
Codice:
SELECT Cliente.nome, Count(QCP.codCliente)
FROM Cliente
INNER JOIN  (
	SELECT DISTINCT Cliente.codCliente, Cliente.nome, Esame.prezzo
	FROM Cliente
	INNER JOIN Prescrizioni
		INNER JOIN EsamiPrescritti
			INNER JOIN Esame
			ON Esame.codEsame = EsamiPrescritti.codEsame
		ON Prescrizioni.codPrescrizione = EsamiPrescritti.codPrescrizione
	ON Cliente.codCliente = Prescrizioni.codCliente 
) AS QCP
ON Cliente.codCliente = QCP.codCliente
GROUP BY Cliente.nome
HAVING Count(QCP.codCliente) = 1
ORDER BY Cliente.nome;
dove per chiarezza ho rinominato tabelle e campi così:
Codice:
Esame(codEsame, prezzo)
Prescrizioni(codPrescrizione, data, codCliente, codMedico)
EsamiPrescritti(codPrescrizione, codEsame)
Cliente(codCliente, nome, citta)
Medico(codMedico, nome, citta)
guldo76 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 14:25   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da guldo76 Guarda i messaggi
Anche scrivendola come dice trallallero, a cosa serve?!?
no scusa, il mio era solo un altro modo, piu standard e leggibile. Non ho letto tutto il 3d attentamente perché non sono abituato a vedere tutti quei join. Io uso Oracle e si scrive in un altro modo.
Ho solo notato quella GROUP BY perché era in neretto
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 14:37   #9
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
allora, l'ho letto. Potresti lavorare per MIN(prezzo)
Ottieni il MIN(Prezzo) per ogni cliente e poi cerchi i clienti che hanno solo quel prezzo.
Scegli i clienti che nei loro prezzi hanno solo il proprio MIN.
Non so se mi sono capito bene
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 16:12   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
dimenticavo...
ovviamente devi cercare solo quelli che hanno solo quel MIN(prezzo)
quindi devi mettere il MIN in un:
Codice:
AND NOT EXISTS (
SELECT 1 FROM ...
WHERE prezzo <> SELECT MIN(...)
...
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 17:14   #11
guldo76
Senior Member
 
L'Avatar di guldo76
 
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2598
Credo che basti questo:
Codice:
SELECT Cliente.codCliente, Cliente.nome, count(distinct Esame.prezzo)
FROM Cliente
INNER JOIN Prescrizioni
	INNER JOIN EsamiPrescritti
		INNER JOIN Esame
		ON Esame.codEsame = EsamiPrescritti.codEsame
	ON Prescrizioni.codPrescrizione = EsamiPrescritti.codPrescrizione
ON Cliente.codCliente = Prescrizioni.codCliente 
GROUP BY Cliente.codCliente, Cliente.nome
HAVING count(distinct Esame.prezzo) = 1
ORDER BY Cliente.nome;
senza bisogno di fare un self join su Clienti, che diventa necessario se il database non supporta il count(distinct campo).
guldo76 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 17:15   #12
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da trallallero Guarda i messaggi
Io uso Oracle e si scrive in un altro modo.
Anch'io uso oracle, ma i join li scrivo proprio così!!
Sei mica all'infame versione 8?? :P
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2007, 21:29   #13
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da shinya Guarda i messaggi
Anch'io uso oracle, ma i join li scrivo proprio così!!
Sei mica all'infame versione 8?? :P
lavoriamo anche su 9 (tra un pò avremo anche il 10) ma continuiamo a non usare quella sintassi.
Inner join è di default, non serve specificarlo, l'outer è (+) dopo il campo. Questo dopo la WHERE tra i campi di tabelle diverse perchè devo dire che non sono pratico delle JOIN dentro la clausola FROM. So che non è supportata prima della versione 9 ma non l'ho mai dovuta usare. E non ne vedo l'utilità ... ma mi incuriosisce quindi indagherò.
Ciao
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Starlink Mini 2 è ufficiale: batt...
Tutte le migliori offerte AliExpress con...
Singles' Day AliExpress, prezzi speciali...
Singles' Day AliExpress, console a prezz...
Singles' Day AliExpress, e-bike in offer...
Singles' Day AliExpress, hard disk e SSD...
Singles' Day AliExpress, da mezzanotte n...
iPhone 18e svelato in anticipo: ecco cos...
Rockstar ha un piano preciso per il mult...
Un iPhone Duo da oltre 65 mila dollari: ...
Anthropic: IPO tra 70 e 78 dollari, Goog...
SSHole in OpenSSH è già sfruttata: la CI...
Secure Future Group: il rischio cyber si...
Recensione Anker MagGo Power Bank 2 Pro,...
Salesforce Agentforce Coworker: il colle...
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: 03:14.


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