Un saluto a tutta la community ! :)
Ho un "problemino" abbastanza particolare. Vi spiego cosa vorrei fare:
Ho un capo ricerca strutturato cosi:
PAROLA CHIAVE DELLA RICERCA | CATEGORIA | PREZZO MIN | PREZZO MAX
Supponiamo che una persona sceglie la CATEGORIA auto.
Il mio database MySQL e strutturato in questo modo (non chiedetemi il perché| :D)
Auto_nuove
Auto_usate
Accessori_auto
Antifurti_auto
Quando la persona vuole cercare nella categoria AUTO il script deve eseguire una ricerca in tutte queste quattro tabelle (che come struttura sono identiche).
Qui entra in gioco la funzione UNION.
Io però non ce l’ho solo la categoria auto. Avrò anche Immobili, Lavoro, ecc.
Quello che potrei usare sarebbe una Select Case.
Il mio codice attuale e il seguente:
Questo codice fa la ricerca IN UNA SOLA TABELLA e senza nessun select case.
server.ScriptTimeout = 300 '5 minuti
'Recupero le variabili per paginare
page = Cint(request.querystring("page"))
if page = 0 then page = 1
'Assegno il nome del database
database = "database"
'dichiaro le variabili
dim RicercaTesto, RicercaCategoria, PrezzoMin, PrezzoMax, voci
'recupero campi dal form di ricerca e gli converto nelle variabili
RicercaTesto = Request.form("testo_ricerca")
RicercaCategoria = Request.form("categoria")
PrezzoMin = Request.form("prezzo_min")
PrezzoMax = Request.form("prezzo_max")
voci = split(RicercaTesto)
'se l'utente ha javascript disabilitato e riesce a fare la ricerca, allora imposto
'PrezzoMin a 0 e PrezzoMax a 999999
If Len(PrezzoMin) = 0 or Not IsNumeric(PrezzoMin) then
PrezzoMin = 0
End If
If Len(PrezzoMax) = 0 or Not IsNumeric(PrezzoMax) then
PrezzoMax = 999999
End If
call dbConnect(objConn, database)
'Record per pagina
pageSize = 10
'Numero di Pagine visualizzate nei link
Numerazione_Max = 7
'Primo record di ogni pagina
inizio = (page - 1) * pageSize
'Pagine complessive per effetto della paginazione
pagine_totali = tot_record / pageSize
'Arrotondamento in caso di resto della divisione precedente
if pagine_totali - CInt(pagine_totali) > 0 then
pagine_totali = CInt(pagine_totali + 1)
else
pagine_totali = CInt(pagine_totali)
end If
strSQL = "SELECT * FROM "&RicercaCategoria&" WHERE"
for i = 0 to uBound(voci)
if i=0 then strSQL=strSQL & "("
strSQL = strSQL & " titolo LIKE '%" & voci(i) & "%' OR descrizione LIKE '%" & voci(i) & "%'"
if i < uBound(voci) then strSQL = strSQL & " OR"
if i=ubound(voci) then strSQL=strSQL & ")"
next
strSQL=strSQL & " AND (prezzo >= "&PrezzoMin&" AND prezzo <= "&PrezzoMax&") LIMIT "& inizio &", "& pageSize
Set objRS = server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
'Totale dei record
strSQL2 = "SELECT COUNT(*) FROM " & RicercaCategoria & ""
Set objRS2 = objConn.Execute(strSQL2)
tot_record = objRS2(0)
set objRS2 = nothing
Come posso adattare questo codice ad una select case nella quale ci sono istruzioni sql per eseguire la ricerca nelle diverse tabelle usando UNION ?
(ps ricordo che il database e MySQL)
Vi ringrazio veramente di cuore per aver letto tutto!
Spero che qualcuno di voi mi possa aiutare!
Vi ringrazio ancora una volta.
Modificato da Cesar il 28 settembre 2005 15.19 -