Newsgroup: it.comp.software.database
Titolo: SQL: select complessa

Ciao a tutti.
Premessa: database utilizzato MySQL(4.0.18).
Ho fatto diverse ricerche, ho sfogliato tutto il manuale di MySQL ma non
sono riuscito a trovare ciò di cui ho bisogno.
Vedo di spiegare dal principio:
Abbiamo una tabella che contiene i seguenti campi:
campo1 (int)
campo2 (int)
campo3 (int)
campo4 (int)
valore (char)
campo1,2,3 e 4 sono i campi chiave (chiave primaria) della tabella.
Ognuno dei campi puo' essere valorizzato con un valore numerico maggiore
di zero oppure essere uguale a zero.
Potremmo cosi' avere: campo1,campo2,campo3,valore = (1,4,0,0,articolo1)
cosi' come (1,0,0,0,articolo2), (4,7,1,5,articolo3) e cosi' via.
"Teoricamente" per selezionare l'articolo1 dovrei valorizzare le variabili
della mia select in maniera appropriata:
SELECT valore 
  FROM tabella 
 WHERE campo1=variabile1
   AND campo2=variabile2
   AND campo3=variabile3
   AND campo4=variabile4;
con variabile1=1,variabile2=4,variabile3=0 e variabile4=0.
Tutto ciò in un mondo perfetto funzionerebbe alla grande, ma il mio
problema è più complesso: i valori di variabile1...4 NON sono ordinati.
Quindi ad esempio variabile1 = 0,variabile2=1,variabile3=0 e variabile4=4.
Prima di programmare una funzione che mi ordini in maniera crescente il
contenuto delle variabili per passarle nella SELECT, vorrei sapere se
esiste un comando SQL che esegue questo tipo di select in maniera
automatica.
(Questo anche perché la base dati potrebbe essere essa stessa disordinata,
e ordinare le variabili della select non darebbe quindi il risultato
voluto).
Ho già provato con la clausola IN, in questo modo:
SELECT valore 
FROM tabella 
WHERE campo1 IN (4,0,1,0)
AND campo2 IN (4,0,1,0)
AND campo3 IN (4,0,1,0)
AND campo4 IN (4,0,1,0);
Ma non esegue ciò di cui ho bisogno, poichè estrarrebbe piu' di un record:
(0,0,0,0,articoloA) (1,0,0,0,articoloB) (4,0,0,0,articoloB)....
Avete qualche idea sul come fare? :/
Ryilo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

non riesco  a capire la domanda, puoi spiegarmi meglio ?
ciao
--
Andrea
-----------------------------------------
Messaggio inviato con Excite Newsgroup.
http://www.excite.it/newsgroup

 non riesco  a capire la domanda, puoi spiegarmi meglio ?
Ciao.
Dunque, ci provo...
Devo fare la select per chiave primaria. 
La chiave primaria č composta da quattro campi numerici.
Non ho pero' la corrispondenza di quale dei campi della chiave contenga il
valore che vado a cercare.
Se vado nella tabella vedo un record cosi' composto:
campo1 = 9 ; 
campo2 = 0 ; 
campo3 = 1 ; 
campo4 = 0 ;
prodotto = prodotto1 ;
Non posso fare una select normale in quanto ho la chiave numerica, ma non
ordinata nella giusta sequenza (essenziale per la select normale).
Ovvero, vorrei che cercando con i valori 9,0,1,0 oppure 0,0,1,9 o un'altra
combinazione di questi numeri il risultato sia il record di cui sopra.
E' possibile?


 AND campo4 IN (4,0,1,0) ...
... and campo1 != campo2 and campo1 != campo3 and campo1 != campo4 and
campoa2 != campo3
 and campo2 != campo4 and campo3 != campo4

 Ryilo



in questo modo non funzionerebbe mai una sequenza che abbia due o più valori
uguali
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 uguali
Esatto, purtroppo la presenza del valore zero come filler costituisce il
problema. :/
Nel caso riportato sopra ad esempio, essendo presente lo zero in due
diversi campi non viene restituito nessun record (poichč non sono tutti e
quattro diversi tra loro).
Forse inserendo delle IF... solo che non riesco a elaborarla in questo
momento.. urgh... proverň a pensare a qualche altra cosa appena riesco :) 


 che sia la chiave primaria piu' strana che io abbia mai visto :-)
E' una tabella molto particolare. 
Vedi i quattro valori numerici come componenti chimici, e "prodotto" come
la formula risultante, il composto. Cosi' dovrebbe chiarire un po' le cose.
Grazie comunque :)


 Non vedo altra soluzione che gestire l'ordine dei campi via software.  
Si, credo che mi arrenderò lasciando quest'incombenza al software di
gestione :/
Grazie comunque :)



