+ Rispondi alla Discussione
Risultati da 1 a 13 di 13

Query con operatore LIKE - funziona in parte :(

Ultimo Messaggio di cali1981 il:
  1. #1
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17

    Query con operatore LIKE - funziona in parte :(

    Innanzitutto salve a tutti. E' la prima volta che mi affaccio su questo forum e spero di trovare la soluzione al mio problema.

    Sto realizzando un piccolo motore di ricerca per un sito e uso una query, identica per logica a molti esempi visti in alcuni siti, dove ho la possibilità di fare una ricerca adattando la stessa al numero di parole inserite, ma a me sembra non funzioni perfettamente.

    SELECT * from documenti WHERE descrizione LIKE '%parola1%' AND '%parola2%' AND...

    Se cerco una sola parola, ad esempio FERRARI, la trovo senza problemi. Ma se cerco FERRARI e AEREO, pur essendo nel campo descrizione non me ne trova nessuno! Ma se metto solo AEREO me lo trova...

    Mi spiegate questo comportamento per me anomalo? Allora se ho bisogno di tirare fuori più parole l'AND a che mi serve?

    Uso ACESS e ASP...

    Grazie a quanti mi vorranno illuminare!

  2. #2
    Esperto L'avatar di Rinzi
    Data Registrazione
    Feb 2005
    Località
    Roma
    Messaggi
    5,462
    ciao e benvenuto

    prova così
    SELECT * from documenti WHERE descrizione LIKE '%parola1%' AND descrizione LIKE '%parola2%'

  3. #3
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17
    mhh...probabilmente ho scritto male io, ma domani proverò in ufficio e vi faccio sapere. Grazie mille per la rapida risposta.

  4. #4
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Citazione Originariamente Scritto da Rinzi
    ciao e benvenuto

    prova così
    SELECT * from documenti WHERE descrizione LIKE '%parola1%' AND descrizione LIKE '%parola2%'
    Forse sarebbe meglio:
    Codice:
    SELECT * from documenti WHERE 
                     descrizione LIKE '%parola1%' OR 
                     descrizione LIKE '%parola2%'

  5. #5
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17
    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).

    ...!

  6. #6
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17
    ...in teoria con AND dovrebbero uscirmi fuori tutti i record trovati che nella descrizione hanno "house" e "fantascienza"...o no?

  7. #7
    Esperto
    Data Registrazione
    Mar 2006
    Località
    Perugia
    Messaggi
    1,742
    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!

  8. #8
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17
    ...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

  9. #9
    Esperto
    Data Registrazione
    Mar 2006
    Località
    Perugia
    Messaggi
    1,742
    Citazione Originariamente Scritto da spyro70
    ...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!

  10. #10
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17
    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:

    LOGICA BINARIA

    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!

  11. #11
    Esperto
    Data Registrazione
    Mar 2006
    Località
    Perugia
    Messaggi
    1,742
    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!

  12. #12
    User
    Data Registrazione
    Oct 2006
    Messaggi
    17
    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!

  13. #13
    Esperto
    Data Registrazione
    Mar 2006
    Località
    Perugia
    Messaggi
    1,742
    Nel forum c'è sempre qualcuno che ti aiuta!

    Ciao e buona programmazione!

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.