Newsgroup: it.comp.software.database
Titolo: SQL, dubbio sulla query

Mi è venuto un dubbio TREMENDO (anche se per i più potrà sembrare banale),
stavo facendo una SELECT per estrapolare i dati da un database così:
SELECT *
FROM tabella
WHERE tipoarticolo='tipoarticolo' AND costo='costo' AND colore='colore'
ORDER BY nomearticolo
Il problema è che io volevo fare una SELECT dove l'utente non deve per forza
azzeccare i tre parametri, ma ne basta uno solo, quindi ho pensato di fare
così:
SELECT *
FROM tabella
WHERE tipoarticolo='tipoarticolo' OR costo='costo' OR colore='colore'
ORDER BY nomearticolo
solo che in questo modo mi da tutti i risultati che hanno almeno un criterio
soddisfatto.
Insomma, io vorrei solo che l'utente avendo tre campi di valori da inserire
(tipoarticolo, costo e colore) possa inserire i valori che desidera e trovi
come responso l'associazione dei valori che ha inserito.
Il fatto è che AND andrebbe bene ma se io metto solo il valore 'colore' (per
esempio) e lascio vuoti 'tipoarticolo' e 'costo' mi da un risultato vuoto
(perchè tipoarticolo e costo non hanno corrispondenze), capite?
Potete aiutarmi
Fabio
PS: con un db in Access2000, una query tipo quella qua sopra in una pagina
ASP, fino a quanti criteri di selezione può gestire?
Ho fatto una prova e con 4 criteri il db mi da risultati assurdi
Ciao
Fabio

 ORDER BY nomearticolo
 SELECT *
 FROM tabella
 WHERE tipoarticolo='*'&'tipoarticolo'&'*' AND costo='*'&'costo'&'*' AND
colore='*'&'colore'&'*'
 ORDER BY nomearticolo
Fabio <mich...@nospaMtiscalinet.it> wrote in message
399H6.15498$q3.2...@news1.tin.it...


 ha scritto nel messaggio
news:sPcH6.1881$0t6....@news.infostrada.it...


 risultato. Dove sbaglio?
Che invece di AND ci voleva OR (altrimenti devi imbroccarle
tutte e 3), inoltre la sintassi e':
SQL = "SELECT * FROM articoli WHERE titolo LIKE '*" & titolo & "*' OR etc.etc.
LIKE e gli asterischi servono a fare le ricerche 'parziali'.
Davide

 ha scritto nel messaggio
news:9cmcud$e5bu9$3...@ID-18487.news.dfncis.de...


 Ma non ne dà. Forse sbaglio qualche apice?
Non mi sembra, se la query non ti ritorna niente controlla il
contenuto del db, evidentemente riduci ad un solo parametri e
verifica di estrarre dei dati.
Davide

 > Dovrebbe darmi comunque il risultato perchè ho azzeccato Franco. Giusto?
No, non va...
io mi sono dimenticato di dirvi che il valore &cappello& è una variabile e
viene inviata da un form:
WHERE settore LIKE '*'&varsettore&'*' OR citta LIKE '*'&varcitta&'*' OR
tipodicontratto LIKE '*'&varcontratto&'*'
non so proprio come venirne a capo...
con la query qua sopra, se seleziono uno o due parametri mi da questo
errore:
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters
......line 26
Se seleziono tutti e tre i parametri l'errore è questo:
error '80004005'
Unspecified error
......line 26
Aiutoooooooo!
Fabio

Ti fai un piccolo script e, se la casella i testo e vuota, elimini la
clausola AND.... dalla tua select.
Luca
"Fabio" <mich...@nospaMtiscalinet.it> ha scritto nel messaggio
news:399H6.15498$q3.2...@news1.tin.it...


 La soluzione giusta è quella con l'OR devi togliere gli apici se il valore
è
 di tipo numerico.
 Es. se nella tabella hai i seguenti dati:
 Art.       costo    colore
 --------------------------
 ART1    1000    ROSSO
 ART2    2000    BLU
 ART3    3000    VERDE
 e costo è di tipo numerico nella select non devi mettere gli apici e
 naturalmente le colonne Articolo, Costo e Colore devono avere un valore
 diverso da null o da "" (stringa vuota) altrimenti se l'utente inserisce il
colore e lascia articolo e costo vuoti, quindi i parametri vuoti conterranno
o null o "" (stringa vuota), il risultato sarà ART="",COSTO="",COLORE=Valore
e se la tua tabella non contiene valori nelle colonne ART e COSTO il
risultato della query sarà composta da tutte le righe dove uno dei due campi
non conterrà valori.
"Fabio" <mich...@nospaMtiscalinet.it> ha scritto nel messaggio
news:399H6.15498$q3.2...@news1.tin.it...


Perchè non provi a
select * from tabella
WHERE ( tipoarticolo='tipoarticolo'  OR tipoarticolo is null )
AND ( costo='costo' OR costo is null )
AND ( colore='colore' OR colore is null )
.....
ciao eap90210
--
Fabio <mich...@nospaMtiscalinet.it> wrote in message
news:399H6.15498$q3.2...@news1.tin.it...
