Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Ricerca da escludere col NOT

    Ciao a tutti.
    Ho una query simile a questa:

    $sql = "SELECT * FROM tabella1
    WHERE record LIKE '%$parola_cercata%' " ;

    Vorrei che mi escludesse dalla ricerca la "parola_cercata" ESATTA, cioè che mi trovi tutte le parole simili e basta.
    Esempio:

    record sul db: piano, pianoforte

    parola_cercata: piano

    record trovato: pianoforte

    credo si faccia col NOT.. ma non riesco a trovare come fare la sintassi.
    grazie ciao

  2. #2
    Abbastanza problematica la cosa per via dei contenuti che possono esserci nel campo di ricerca. ammettiamo che nel campo ci sia una sola parola e tu abbia: piano e pianoforte e la ricerca richiesta sia per piano... in questo caso e' facilmente fattibile.

    codice:
    $str = 'piano';
    
    SELECT *
    FROM tabella
    WHERE campo LIKE '%$str%'
    and campo NOT LIKE '$str'

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    hai ragione..
    cmq in tutti i casi di ricerca (è un glossario) la parola è univoca.. quindi funziona.
    grazie

  4. #4
    Originariamente inviato da davidino80
    hai ragione..
    cmq in tutti i casi di ricerca (è un glossario) la parola è univoca.. quindi funziona.
    grazie
    occhio che ho messo %stringa% ... se l'inizio della parola dovesse esser lo stesso togli il % iniziale. Altrimenti ti trova anche parole che "contengono" il termine.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Giusto.

    Stavo facendo alcune prove.. e in certi casi funziona e in altri no.. ma credo di semplificare meglio la cosa.

    In sostanza, la vera query su cui lavoro fa un controllo con un OR:

    $sql = "SELECT word_title FROM dp_words
    WHERE word_title LIKE '%$word_search%'
    OR word_desc LIKE '%$word_search%'

    Questa è una seconda query rispetto a quella classica delle ricerche.
    In pratica, dico all'utente che esiste la parola cercata in altri vocaboli (word_title) o in altre descrizioni dei vocaboli (word_desc).. però devo escludere la parola inserita.

    Altrimenti avrei:

    parola ricercata: "fiato"

    parola trovata: fiato (descrizione: soffio umano)

    suggerimento1: fiato (descrizione: soffio umano)
    suggerimento2: sassofono (descrizione: strumento musicale a fiato)

    non so se mi sono spiegato bene.. ma l'intento sarebbe questo.
    ho visto che inizia a funzionare così:

    $sql = "SELECT word_title FROM dp_words
    WHERE word_title LIKE '%$word_search%'
    AND word_title<>'$word_search'
    OR word_desc LIKE '%$word_search%'
    AND word_title<>'$word_search' ";

    praticamente ho messo lo stesso controllo dopo le 2 condizioni in modo che mi escluda la prima condizione, e che il risultato sia:

    parola ricercata: "fiato"

    parola trovata: fiato (descrizione: soffiare)

    suggerimento1: sassofono (descrizione: strumento musicale a fiato)

    così ho visto che funziona solo se trova un'altra query..ma se ne trova di più fa confusione.. devo capire bene..
    che dici?

  6. #6
    potresti provare con full text (MATCH ... AGAINST) che ti mette in ordine di rilevanza le tuple trovate... ma non puo' trovare un qualcosa che non ha una relazione con qualcosa d'altro.


    codice:
    $sql = "
    SELECT word_title 
    FROM dp_words
    WHERE (word_title LIKE '%$word_search%' 
    AND word_title NOT LIKE '$word_search')
    OR 
    (word_desc LIKE '%$word_search%'
    AND word_title  NOT LIKE '$word_search') ";
    Non saprei che dirti di piu' senza studiare per bene il progetto.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    mi sa che ho risolto ripescando la tua dritta:

    $sql = "SELECT word_title FROM dp_words
    WHERE word_title LIKE '%$word_search%'
    AND word_title NOT LIKE '%$word_search%'
    OR word_desc LIKE '%$word_search%'
    AND word_title NOT LIKE '%$word_search%' ";

    ora mi trova solo gli affini.. ma non i doppi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.