Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    ricerca su campo con "like"

    Ciao a tutti, sto realizzando un picolo motore interno su un catalogo di prodotti, la stringa sql che interroga il db è questa:
    "Select * from articoli where articolo like '%"&key&"%'"

    in questo modo se metto il nome preciso di un articolo es. "d70" mi esce fuori il record della nikon D70, se invece inserisco "d 70" la ricerca non ha esito, al contrario se inserisco solo "d" mi escono tutti i risultati che contengono la lettera d ne campo "articolo".

    C'è modo di evitare questo problema? Grazie
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  2. #2

    Re: ricerca su campo con "like"

    Originariamente inviato da centoiso
    C'è modo di evitare questo problema? Grazie
    QUale problema? Funziona esattamente come dovrebbe.

  3. #3
    Il mio consiglio è questo: nella tabella del db relativa ai prodotti aggiungi un campo di nome "keywords" e li dentro ci metti tutte le possibili combinazioni relativi al criterio di ricerca dei prodotti.
    In questo caso la query SQL la fai su quel campo.
    Ad esempio sul campo "keywords" io metto
    nikon d70 d 70

    A questo punto la query passa "... WHERE keywords LIKE '%d 70%'" e il risultato dovrebbe apparire.

  4. #4
    Se questa è l'unica soluzione credo che rinuncerò, mi sembra un dispendio di spazio (sul db) e di tempo (nell'inserimento articoli) che non vale la pena.
    Grazie comunque.
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  5. #5
    Originariamente inviato da centoiso
    Se questa è l'unica soluzione credo che rinuncerò, mi sembra un dispendio di spazio (sul db) e di tempo (nell'inserimento articoli) che non vale la pena.
    Grazie comunque.
    Volendo puoi decidere di splittare allo spazio la query di ricerca e di eseguire una query con ciascun valore espresso nella condizione where.
    Calcola che restituirà però molti record in +.

  6. #6
    Originariamente inviato da centoiso
    Se questa è l'unica soluzione credo che rinuncerò, mi sembra un dispendio di spazio (sul db) e di tempo (nell'inserimento articoli) che non vale la pena.
    Grazie comunque.
    Ti sbagli invece.
    I campi per le keywords sono usati da parecchi sistemi di content management ed e-commerce.
    Aggiornati.

  7. #7
    Originariamente inviato da weppos
    Volendo puoi decidere di splittare allo spazio la query di ricerca e di eseguire una query con ciascun valore espresso nella condizione where.
    Calcola che restituirà però molti record in +.
    e perche' dovrebbe restituirne di piu'? basta mettere la ricerca dei singoli valori in AND.

  8. #8
    Originariamente inviato da Mems
    Ti sbagli invece.
    I campi per le keywords sono usati da parecchi sistemi di content management ed e-commerce.
    Aggiornati.
    Il tuo tono mi sembra un po' polemico, io volevo dire che per le mie esigenze non credo valga la pena aggiungere un campo e sopratutto riempirlo per ogni articolo... non ho detto che la tecnica che mi hai suggerito è inutile, anzi ti ho pure ringraziato... come ho fatto nelle moltissime occasioni in cui mi sei stato d'aiuto...
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  9. #9
    Originariamente inviato da weppos
    Volendo puoi decidere di splittare allo spazio la query di ricerca e di eseguire una query con ciascun valore espresso nella condizione where.
    Calcola che restituirà però molti record in +.
    interessante, non ho capito bene come, mi faresti un esempio?
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  10. #10
    Originariamente inviato da centoiso
    interessante, non ho capito bene come, mi faresti un esempio?
    Immaginando che la query sia "d 70" splitta il campo query allo spazio e crea la condizione della query con nel valore WHERE ciascun valore dell'array ricavato dallo split.


    e perche' dovrebbe restituirne di piu'? basta mettere la ricerca dei singoli valori in AND.
    Anche mettendo AND in una ricerca per "d 70" verranno fuori valori %'d 70'% mentre la ricerca per %'d'% AND %'70"% ovviamente avrà una combinazione di risultati ottenibili maggiori poichè includerà anche valori che tra d e 70 hanno spazi, non spazi o carateri, mentre %'d 70'% no.

    Spero di aver chiarito il contetto contorto...

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.