290 messaggi dal 08 luglio 2008
Ciao a tutti,

devo risolvere un problema ad un motore di ricera.

Ho un elenco clienti con un unico campo ricerca dove l'utente puo inserire nome e cognome del cliente.

Il problema è che a db i campi nome e cognome sono due campi separati, quindi la mia query cerca la parola chiave o nel campo nome, o nel campo cognome.
Quindi se ho a db un cliente dove nel campo nome ho il valore MARIO e nel cognome il campo ROSSI, se cerco solo mario o solo rossi funziona, ma se cerco mario rossi ovviamente non trova nulla.

Come posso gestire questo tipo di query?
Posso in un certo senso in fase di query unire i due campi?

grazie
678 messaggi dal 12 maggio 2001
www.idioteca.it
il mio consiglio è di fare uno split del tuo campo di ricerca e cercare, magari in or e su entrambi i campi, i valori inseriti dall'utente.
Giusto una bozza di macro codice (riguarda tu eventualmente la sintassi corretta)
campo input: "mario rossi"
arraySearch = split("mario rossi", " ")
stringaRicerca = funzioneCiclaArraySearchEcomponiWhere(arraySearch)
Query: SELECT nome, cognome FROM tabella WHERE <stringaRicerca>

Ripeto, questo è un approccio, vedi tu per quanto concerne sintassi e query da comporre.
ciao
290 messaggi dal 08 luglio 2008
si ci ho pensato...pero con lo split come gestisci un cognome composto?

es. mario de biasio?

ti ritroveresti un array di 3 elementi e non sai come ordinarli in fase di ricerca
12 messaggi dal 17 febbraio 2002
Nella Where usa LIKE per ogni elemento che compone la stringa di ricerca:

... WHERE (nome LIKE <elem1> OR LIKE <elem2> OR ..) AND (cognome LIKE <elem1> OR LIKE <elem2> OR ..)

<elemX> = "%stringaX%"

Non e' il massimo dell'efficienza ma ti risolve anche il caso di stringa di ricerca invertita cioe' "ROSSI MARIO" / "MARIO ROSSI".

Evidentemente con due campi di ricerca specializzati sarebbe tutto più semplice ...
290 messaggi dal 08 luglio 2008
Ciao,

alla fine ho risolto in questo modo:

WHERE nome+' '+cognome LIKE '%parolacercata%' OR cognome+' '+nome LIKE '%parolacercata%'

non so in termini di prestazioni se sia poco efficiente però non avendo molti record sui quali fare la ricerca nel mio caso lavora egregiamente.

;)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.