|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
[SQL] Non riesco a formulare una query
Situazione: ho una tablla che descrive degli ingredienti con 6 colonne (nome, disponibilità, scadenza, prezzo, soglia, unità di misura), la chiave primaria è la coppia "nome-scadenza". All'interno della tabella possono esserci al più 2 tuple dello stesso ingrediente, le quali differiscono per data di scadenza.
Problema: devo ottenere una tabella con tutti e soli gli ingredienti la cui disponibilità è <= al proprio attributo "soglia". Se ci fosse una sola tupla per ogni ingrediente sarebbe semplicissimo SELECT * FROM ingrediente WHERE disponibilita < soglia se però un ingrediente ha una disponibilità inferiore alla soglia, ma è presente anche una seconda tupla dello stesso ingrediente con disponibilità tale che la somma delle due disponibilità superi la soglia, questo ingrediente non deve comparire nel risultato. Come posso fare? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9459
|
Codice:
SELECT DISTINCT(nome), disponibilità, etc. FROM ingrediente WHERE disponibilita < soglia
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
|
Non so se la tua soluzione sia corretta. Io farei così:
Codice:
SELECT ing1.nome FROM ingrediente as ing1 JOIN ingrediente as ing2 ON ing2.nome = ing1.nome WHERE ing1.disponibilita < ing1.soglia AND (ing1.disponibilità + ing2.disponibilità) < ing1.soglia
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole" |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
Ho usato con successo questa query
SELECT * FROM ingrediente GROUP BY nome HAVING SUM(disponibilita) <= soglia |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Non e' SQL Standard
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Neppure questo e' SQL Standard
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
Ma lo uso e si dovrà sempre usare su un DB MySQL e funziona.
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Avevo letto SQL e pensavo fosse un esercizio.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:48.




















