PDA

Visualizza la versione completa : query di ricerca su piu filtri


Stanislao
20-03-2020, 14:09
Salve
uso questa query per effettuare una ricerca su piu campi
ma nonostrante passi correttamente i parametri mi tira fuori risultati sfalsati

premetto che alcuni dei campi nella select potrebbero anche non essere valorizzati perchč non scelti...


cosa sbaglio?



SELECT * FROM master2020 WHERE ANA_MIN_QC_annualita LIKE '$ANA_MIN_QC_annualita' OR ANA_MIN_QC_regione LIKE '$ANA_MIN_QC_regione'OR ANA_MIN_QC_provincia LIKE '$ANA_MIN_QC_provincia'OR ANA_MIN_QC_categoria LIKE '$ANA_MIN_QC_categoria' OR SYS_status_pro LIKE '$SYS_status_pro'




grazie mille

nman
20-03-2020, 15:05
si tratta di una semplice serie di "OR"
se uno solo č valido allora ti estrae il record corrispondente .....

tu che problema riscontri ?
che DB usi ?
.

Stanislao
20-03-2020, 15:21
se ne inserisco uno solo funziona... se inserisco 2 o piu parametri non ricerca secondo quei criteri

nman
20-03-2020, 17:53
........ non ricerca secondo quei criteri
Dovresti dirci qual' cosina in pių
-- Innanzitutto il DB
-- poi secondo quali criteri non ricercherebbe ??

Sappi che solitamente il PC sbaglia meno degli umani
quindi facci un esempio pratico,
----- Ho questa tabella con questi record
----- applico questo filtro
----- mi aspetto questo risultato
----- invece ottengo quest' altro risultato

.

optime
20-03-2020, 18:04
fatti stampare la query una volta composta e provala sulla console

Stanislao
20-03-2020, 19:23
ho una tabella cosė composta

anno regione comune provincia

nel form ho le 4 select relative ai campi

e vorrei selezionare per esempio solo i record della regione campania dell'anno 2018. oppure altro esempio tutti i record di roma del 2018

grazie

nman
21-03-2020, 01:24
Premesso che una tabella con i campi Regione, Provincia e Comune č denormalizzata perche dovresti avere 3 tabelle relazionate .....
ma non entriamo in questi pantani ......

Se ho ben interpretato tu vuoi mettere dei parametri su alcuni campi e su quelli lasciati vuoti vuoi "prendere" tutto
Quindi se tu vuoi filtrare 2018 e campania devi usare AND al posto di OR
Invece OR lo devi usare per "prendere" tutto se il parametro č Null

Piu o meno viene cosi (da adattare al tuo DB che non ci hai ancora detto)


SELECT
Anno, Regi, Prov, Comu
FROM Tabella
WHERE
(
( ( Anno = 'ParametroAnno' ) OR ( 'ParametroAnno' Is Null ) )
AND
( ( Regi = 'ParametroRegi' ) OR ( 'ParametroRegi' Is Null ) )
AND
( ( Prov = 'ParametroProv' ) OR ( 'ParametroProv' Is Null ) )
AND
( ( Comu = 'ParametroComu' ) OR ( 'ParametroComu' Is Null ) )
)
;

.

Loading