Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    MySQL - Creare una tabella da più tabelle per la ricerca

    Ho un sito che prende tutto il contenuto da 5 tabelle di un MySQL. Vorrei creare un sistema di ricerca per il sito. No ci sono problemi per fare la ricerca in una delle 5 tabelle. Ma non è la soluzione che cerco. Vorrei cercare in contemporanea tutte le tabelle. La soluzione che propongo sarebbe creare una tabella che raccolga tutto il contenuto delle 5 tabelle e quindi fare la ricerca in questa nuova tabella, che servirebbe unicamente a questo scopo. La potrei creare manualmente e aggiornarla ogni tanto con degli script PHP. Però, domanda: ci sarebbe una procedura, lato server, che la aggiorni automaticamente quando vieni aggiornata una delle 5 tabelle? Grazie.
    Luiz

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    39
    Non conosco la struttura delle tabelle, ma immagino che se puoi farne una unica puoi anche fare una view.
    In questo modo hai una vista su tutte le tabelle sempre aggiornata senza avere dati duplicati.

  3. #3
    La struttura delle 5 tabelle sono diverse, tipo come sotto:
    table_1
    id | titolo | data | testo
    table_2
    id | data | codice | nome | campo_4 | campo_6
    ecc...

    Pensavo creare da queste tabelle una tabella così strutturata:
    table_search
    id | id_originale | table_originale | contenuto

    In "id_originale" conservo l'id del record originale e in "table_originale" il nome della tabella che effettivamente ha il contenuto "presentabile" agli utenti, in modo tale che possa indirizzare l'utente, dopo la ricerca, al record giusto. Dentro del campo "contenuto" metterei tutto il resto, tutte le info ricercabili...
    Luiz

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    39
    non capisco conc che logica tu vorresti popolare il campo 'contenuto', in base a qualche chiave di ricerca? Oppure vuoi creare tabella che contenga la mapaptura dei dati nel db?

  5. #5
    Si, in "contenuto" vorrei mettere tutti i dati. Non so esattamente cosa voglia dire "mappatura dei dati". In parole povere, vorrei avere in un'unica tabella tutti i dati presenti nelle 5 tabelle e che questi dati siano aggiornati automaticamente. Penso si debba usare qualche istruzione nel proprio server, usando forse "Store procedures". Ma non sono sicuro se sia la strada da seguire. Grazie.
    Luiz

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    39
    Esempio:

    table_1
    id | titolo | data | testo
    1 ciao 2012-01-31 ciao a tutti
    2 bau 2012-03-08 bau a tutti

    table_2
    id | data | codice | nome | campo_4 | campo_6
    1 2012-01-01 0001 mario rossi 200
    2 2012-01-21 0030 antonio verdi 150



    tu vuoi una tabella con il contenuto:
    id | id_originale | table_originale | contenuto
    1 1 table_1 ciao
    2 1 table_1 2012-01-31
    3 1 table_1 ciao a tutti
    4 2 table_1 bau
    5 2 table_1 2012-03-08
    6 2 table_1 bau a tutti
    7 1 table_2 2012-01-01
    8 1 table_2 0001
    9 1 table_2 mario
    10 1 table_2 rossi
    11 1 table_2 200
    12 2 table_2 2012-21-01
    13 2 table_2 0030
    14 2 table_2 antonio
    15 2 table_2 verdi
    16 2 table_2 150


    E' questo che intendi?

  7. #7
    Avendo:

    table_1
    id | titolo | data | testo
    1 ciao 2012-01-31 ciao a tutti
    2 bau 2012-03-08 bau a tutti

    table_2
    id | data | codice | nome | campo_4 | campo_6
    1 2012-01-01 0001 mario rossi 200
    2 2012-01-21 0030 antonio verdi 150


    Vorrei creare una tabella con il contenuto:
    id | id_originale | table_originale | contenuto
    1 | 1 | table_1 | ciao 2012-01-31 ciao a tutti
    2 | 2 | table_1 | bau 2012-03-08 bau a tutti
    3 | 1 | table_2 | 2012-01-01 0001 mario rossi 200
    4 | 2 | table_2 | 2012-01-21 0030 antonio verdi 150
    Luiz

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    39
    crei una view o una tabella mettendo in union le tabelle che ti interessano e
    per ciascuna tabella metti l'id, il nome della tabella e concateni tutti i campi.

    ora non ti metto tutto il codice esatto, ma una cosa giusto per darti un idea:

    select id, 'tabella_1', titolo + data + testo
    union
    select id, 'tabella_2', data + codice + nome + campo_4 + campo_6
    union
    ...

    se inserisci tutto in un nuova tabella con ID autoincrementante hai esattamente l'output che cerchi. Occhio ai cast in varchar quando concateni.

  9. #9
    Grazie. Era quello che cercavo.
    Luiz

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    39
    Figurati!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.