- Home
- Categorie
- Coding e Sistemistica
- PHP
- Ricerca in più tabelle
-
Ricerca in più tabelle
Buongiorno,
sto sviluppando un portale molto articolato sul turismo ed ho la necessità di inserire un motore di ricerca interno che possa scovarmi ciò che gli utenti più o meno cercano.
Il fatto è che, naturalmente, gli elementi da ricercare (articoli, testi, links etc) sono contenuti in più tabelle di un medesimo database (quindi tabelle news, eventi, bandi_concorsi...etc etc.).
Mi chiedo come posso organizzare il mtore di ricerca interno che contemporaneamente possa passare al vaglio tutte le tabelle sovraindicate e tirarmi fuori quello che l'utente cerca.Devo agganciare le tabelle l'una all'altra o c'è una specifica formula che permette di realizzare le ricerche mantenendo le tabelle separate?
-
soluzione 1) potresti leggere i db che si tiene mysql dove indica i novi dei vari db, le tabelle e gli attributi; far una ricerca al suo interno e poi selezionare la tabella che contiene l'attributo che cerchi
soluzione 2) potresti fare uno switch sull'attributo che usi x la ricerca che assegna a una stringa il nome della tabella giusta
soluzione 3) fai un join con le varie chiavi delle tabelle e fai la ricerca ricercha lila soluzione 1 è la migliore secondo me... la seconda va bene se nn hai voglia di spendere molte energie... la soluzione 3 fa schifo
-
@Wantley said:
soluzione 1) potresti leggere i db che si tiene mysql dove indica i novi dei vari db, le tabelle e gli attributi; far una ricerca al suo interno e poi selezionare la tabella che contiene l'attributo che cerchi
soluzione 2) potresti fare uno switch sull'attributo che usi x la ricerca che assegna a una stringa il nome della tabella giusta
soluzione 3) fai un join con le varie chiavi delle tabelle e fai la ricerca ricercha lila soluzione 1 è la migliore secondo me... la seconda va bene se nn hai voglia di spendere molte energie... la soluzione 3 fa schifo
La soluzione 1 è la migliore però non ho ben capito come metterla in pratica! Perdonami!
-
allora accedi a mysql guarda il contenuto di ogni tabella facendo:
select * from nomeTabella;quando trovi una tabella contenente tutte le tabelle del tuo db con i loro attributi (immaginiamo che questa tabella si chiami PIPPO)
nn ti resterà che fare:
select nomeTabella
from PIPPO
where attributo='$campo';nn prendere questa query come oro colato... dipende tutto dal tuo dbms e un pò anche dal fatto che in questo momento nn posso provare sul pc quello che sto dicendo
cmq fa delle prove e magari stampa qui i risultati della prima query che ti ho detto
-
@Wantley said:
allora accedi a mysql guarda il contenuto di ogni tabella facendo:
select * from nomeTabella;quando trovi una tabella contenente tutte le tabelle del tuo db con i loro attributi (immaginiamo che questa tabella si chiami PIPPO)
nn ti resterà che fare:
select nomeTabella
from PIPPO
where attributo='$campo';nn prendere questa query come oro colato... dipende tutto dal tuo dbms e un pò anche dal fatto che in questo momento nn posso provare sul pc quello che sto dicendo
cmq fa delle prove e magari stampa qui i risultati della prima query che ti ho dettoHo provato una cosa del genere in mysql. Mi dice ad esempio "3 risultati nella tabella x; 5 risultati nella tabella Y; 1 risultato nella tabella Z". Però non riesco a monitorare la query. Cioè, non mi stampa l'esempio.
Come dovrei impostare la query?
-
che query hai usato?
-
@nicodj88 said:
che query hai usato?
nessuna query, sono entrato in mysql e ho cliccato nella pagina del db su "cerca". Ma la query non me la stampa!