- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Query con operatore LIKE - funziona in parte :(
-
@Rinzi said:
ciao e benvenuto
prova così
SELECT * from documenti WHERE descrizione LIKE '%parola1%' AND descrizione LIKE '%parola2%'Forse sarebbe meglio:
SELECT * from documenti WHERE descrizione LIKE '%parola1%' **OR** descrizione LIKE '%parola2%'
-
Bungiorno a tutti. Stamattina in ufficio ho provato i vostri suggerimenti, ma purtroppo la cosa non cambia. Riesco ad ottenere un risultato solo e soltanto se metto una sola parola presente, se ne metto due non mi viene fuori nulla.
Ho provato anche con OR...ma il discorso non cambia.
*Se cerco la parola "house" e la parola è presente nel mdb ricavo questo:
*
SELECT * FROM documenti WHERE descrizione LIKE '%medici%' ORDER BY doc_id**1
House, il medico d'oro
www.house.it***Se scrivo la parola "house" e "fantascienza" parola presente nel db ottengo questo ma senza alcun risultato
**SELECT * FROM documenti WHERE descrizione LIKE '%house %' AND descrizione LIKE '%fantascienza%' ORDER BY doc_id
**Se scrivo la parola "fantascienza" nel db ottengo questo:
**SELECT * FROM documenti WHERE descrizione LIKE '%fantascienza%' ORDER BY doc_id
*2
Galactica ritorna i cult anni 80
www.galactica.it**4
L'uomo bionico e la donna bionica
www.bionico.net**Tutto questo con l'operatore AND. Se uso l'operatore OR me ne trova o una o l'altra e non tutte insieme (che è il mio obiettivo).
...!
-
...in teoria con AND dovrebbero uscirmi fuori tutti i record trovati che nella descrizione hanno "house" e "fantascienza"...o no?
-
Si, però quelli che li hanno entrambi! Dai risultati che hai dato non mi smebra che ci sia una descrizione con house e fantascienza insieme, o no?
Come suggerito prima, se vuoi quelli chehanno O house O fantascienza devi usare OR invece di AND, se invece vuoi quelli che li hanno entrambi, va bene usare AND, ma poi non stupirti se gli dai due termini che non hanno inente a che fare tra loro e poi non trovi niente!
-
...mhh, credo proprio che hai ragione.
Ho provato ed effettivamente mi escono fuori solo quelli che li contengono entrambi.
Quindi se voglio cercare 2 parole che sono contenuti su due record diversi devo devo procedere in altra maniera...
Scusate ma non sono molto esperto, sto cercando di imparare
-
@spyro70 said:
...mhh, credo proprio che hai ragione.
Ho provato ed effettivamente mi escono fuori solo quelli che li contengono entrambi.
Quindi se voglio cercare 2 parole che sono contenuti su due record diversi devo devo procedere in altra maniera...
Scusate ma non sono molto esperto, sto cercando di imparare
Immaginavo!
Comunque no problem, per fare quello che vuooi tu devi usare OR al posto di AND come detto! Dai una ripassatina alla logica binaria, è semplicissima ma fondamentale!Ciao!
-
Grazie,
sto già ripassando (o meglio studiando) la logica binaria.Posto il link qui di una paginetta interessante, magari se in futuro qualcuno ne avrà bisogno saprà dove cercare:
**Con OR ho comunque risolto, mi sembra di capire.
Quindi ricapitolando...se uso AND ottengo solo le informazioni se AND viene soddisfatto (TRUE) - cioè se le due parole cercate sono presenti contemporaneamente nello stesso record. Naturalmente se una o l'altra è presente, otterrò un FALSE...dico bene?
Prossimo obiettivo...la paginazione...ahi!
-
Si ma in questo caso non ottieni true o false.
Praticamente è come se facesse le due query distinte, e poi dei due insiemi di risultati facesse l'intersezione, quindi restituisce solo i valori presenti in entrambi gli insiemi, cioè quelli ad esempio che contengono SIA Ferrari SIA Aereo.
Invece con OR fa l'unione, quindi restituisce quelli che contengono O FErrari O Aereo. Comunque la logica che dici riguardo al true e false riguardo agli operatori binari è giusta!
Spero di essere stato di aiuto!Ciao!
-
Bene...adesso ho chiaro il concetto...
Che dirti grazie ancora per l'ennesima info. Spero di trovare altro aiuto in seguito perchè con la programmazione ne ho proprio bisogno!
-
Nel forum c'è sempre qualcuno che ti aiuta!
Ciao e buona programmazione!