• User

    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? :mmm:


  • User

    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 li

    la soluzione 1 è la migliore secondo me... la seconda va bene se nn hai voglia di spendere molte energie... la soluzione 3 fa schifo


  • User

    @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 li

    la 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!


  • User

    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


  • User

    @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 detto

    Ho 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?


  • User

    che query hai usato?


  • User

    @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! :arrabbiato: