Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
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: 2595
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: 2595
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


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Axiom Space ha completato un importante ...
Gli aeroplani Airbus utilizzeranno i sat...
Una nuova immagine della cometa interste...
'La soluzione a un problema che non esis...
Radeon RX 9000 sì, Ryzen 9000 no:...
Amazon versa 180 milioni al Fisco e canc...
Meta, il Board di Supervisione guarda o...
DJI rivoluziona le consegne aeree: il nu...
Fibercop e Microsoft Italia uniscono per...
App Store Award 2025: scarica le 17 app ...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
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: 04:24.


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