PDA

Visualizza la versione completa : [SQL] Funzione InStr su più campi


Bestone
07-10-2006, 19:14
Salve.. ho un piccolo problema. devo fare la ricerca in un db access sull'indirizzo di un cliente. ora questo è diviso in più campi, nome, via, ecc.. io avevo pensato alla funzione instr ma come faccio con 1 sola query a farla cercare su più campi insieme? ho provato a legare i campi in tanti modi, con OR, virgola, con +.. ma niente.. chi mi sa aiutare?

oregon
07-10-2006, 20:11
Invia un esempio di quello che hai fatto ...

Bestone
08-10-2006, 00:16
Ecco qui la query, se serve spiegare qualcosa ditemi. in pratica inserendo in input una qualsiasi parte dell'indirizzo deve effettuare ricerca. solo che l'indirizzo è diviso in più campi.
oppure c'è una query che riesci a unire più campi di testo in uno solo? mi farebbe comodo anche per altro..



SELECT Vendita.[ID utente], Vendita.[Email acquirente], Vendita.[Data di vendita], Vendita.[Numero dell'oggetto], Prodotti.[Nome prodotto], Vendita.Quantità, Vendita.[Data pagamento], Vendita.[Data spedizione], Vendita.[In fase di spedizione], Vendita.[Nome e cognome dell'acquirente], Vendita.[Indirizzo dell'acquirente (prima riga)], Vendita.[Indirizzo dell'acquirente (seconda riga)], Vendita.[Città dell'acquirente], Vendita.[Provincia dell'acquirente], Vendita.[CAP dell'acquirente], Vendita.[Memo per uso personale]
FROM Prodotti INNER JOIN Vendita ON Prodotti.Codice=Vendita.[Titolo inserzione]
WHERE (((InStr((Vendita.[Nome e cognome dell'acquirente])+(Vendita.[Indirizzo dell'acquirente (prima riga)])+(Vendita.[Indirizzo dell'acquirente (seconda riga)])+(Vendita.[Città dell'acquirente])+(Vendita.[Provincia dell'acquirente])+(Vendita.[CAP dell'acquirente])+(Vendita.[Paese dell'acquirente]),[Input dati]))>=1));

Bestone
10-10-2006, 00:39
nessuno sa darmi una mano?

oregon
10-10-2006, 00:52
Tra tutti i campi elencati puoi isolare quelli che ti servono e fare un esempio pratico di una ricerca ...?

Bestone
10-10-2006, 01:39
SELECT Vendita.[ID utente],Vendita.[Nome e cognome], Vendita.[Indirizzo dell'acquirente]
FROM Prodotti INNER JOIN Vendita ON Prodotti.Codice=Vendita.[Titolo inserzione]
WHERE (((InStr((Vendita.[Nome e cognome])+(Vendita.[Indirizzo dell'acquirente])]),[Input dati]))>=1));

così dovrebbe andare credo.
devo fare la ricerca in più campi, qui ne ho messi 2 ma credo sia indifferente 2 o più, qui ho messo Vendita.[Nome e cognome] e Vendita.[Indirizzo dell'acquirente].
con instr come li indico tutte e 2 i campi?

oregon
10-10-2006, 06:59
Troppe parentesi ...

WHERE InStr([Nome e cognome]+[Indirizzo dell'acquirente] , [Input dati])>1

Bestone
10-10-2006, 20:46
oregon, va meglio. ma ci deve essere qualche altro problema..
complicando la query con più campi, ovvero così:

SELECT [ID utente], [Nome completo dell'acquirente], [Città dell'acquirente], [Indirizzo dell'acquirente 1], [Indirizzo dell'acquirente 2], [Provincia dell'acquirente]
FROM Vendita
WHERE (((InStr([Nome completo dell'acquirente]+[Città dell'acquirente]+[Indirizzo dell'acquirente 1]+[Indirizzo dell'acquirente 2],[Input dati]))>=1));

ps: le parentesi in più le mette accessautomaticamente.
cmq questa non mi da il risultato. in pratica, su alcuni record fa la ricerca su tutti i campi. su altri record, fa la ricerca solo su 1 o 2 campi. perchè?

se invece faccio così:
SELECT [ID utente], [Nome completo dell'acquirente], [Città dell'acquirente], [Indirizzo dell'acquirente 1], [Indirizzo dell'acquirente 2], [Provincia dell'acquirente]
FROM Vendita
WHERE (((InStr([Nome completo dell'acquirente]+[Città dell'acquirente]+[Indirizzo dell'acquirente 1,[Input dati]))>=1));

funziona, basta che aggiungo 1 altro campo nella instr e non va.. non so prprio che prove fare più, le ho fatte tutte :(

oregon
10-10-2006, 21:18
Mi fai un esempio con dei dati ?

Bestone
10-10-2006, 23:46
ok, i campi sono:ID utente, Nome completo dell'acquirente, Indirizzo dell'acquirente 1, Indirizzo dell'acquirente 2 e Città dell'acquirente.
Ho inserito alcuni record come questi:

silviexx, TOxxxxxI MASSIMO, HOTEL xxEX, VIA GIROLAMO GIGLI 5, SIENA

xxxxxxcod8826, xxxxxexxo De xxxna, via xxxxzia n.10, xxglie

xxxa_89, Alessandro xxxri, mxxxxxne 58, , xiraxxxx

frxxxx9, Maria Maxxxi, via mxxxxo 4, , xxx

dove c'è spazio vuoto è campo vuoto. ho messo delle x perchè sono dati reali, spero vadano cmq bene.. ma come può succedere questo? cioè se effettua la ricerca perchè su alcuni si e altri no?

Loading