Visualizzazione risultati 1 fino 3 di 3

Discussione: interazione tra tre tabelle

  1. #1
    Guest

    Wink interazione tra tre tabelle

    Ciao a tutti, un nuovo problema mi affligge...
    Premesso che il db non è gestito da me e che per forza di cose non posso impostare diversamente campi e tabelle..vi racconto il mio problema...

    Ho tre tabelle che mi devo giostrare per mostrare ogni notizia separata per argomento.

    la prima contiene le notizie
    tabella -> Modulo_DataDyn_Entita_7
    iId = id notizia | Field50 = data| Field52= titolo

    la seconda contiene gli argomenti
    tabella -> Modulo_DataDyn_Categorie_Lineari
    iId = id argomento | sNome = nome argomento

    la terza contiene il collegamento tra id delle notizie e id degli argomenti
    tabella -> Modulo_DataDyn_CC
    iId = id | iIdCompilazione = id notizia | iIdCategoriaLineare = id argomento

    Che casino eh?
    Dunque io devo mostrare tutte le notizie (SELECT iId, Field50, Field52 FROM Modulo_DataDyn_Entita_7)
    in corrispondenza di ogni argomento.

    Avevo fatto una query per la stampa di tutti gli argomenti:
    (ps. WHERE iEntitaId=7 è il filtro per la categoria di argomenti che mi servono)

    Codice PHP:
    $tab_argomento = "
    SELECT sNome, iId
    FROM Modulo_DataDyn_Categorie_Lineari
    WHERE iEntitaId=7
    ORDER BY sNome"
    ;

    $result = mysql_query($tab_argomento);

    while (
    $riga = mysql_fetch_assoc($result)) {
    $nome_argomento=$riga["sNome"];
    $id_argomento=$riga["iId"];
    echo
    "$id_argomento $nome_argomento <br />";
    }
    //while
    poi ne avevo fatta una per stampare le notizie:
    (ps. Modulo_DataDyn_Entita_7.Field49='Press' è il filtro per il tipo di notizia che devo stampare)
    Codice PHP:
    $tab_notizie = "
    SELECT
    Modulo_DataDyn_Entita_7.iId,
    Modulo_DataDyn_Entita_7.Field52,
    Modulo_DataDyn_Entita_7.Field49,
    Modulo_DataDyn_CC.iId,
    Modulo_DataDyn_CC.iIdCompilazione,
    Modulo_DataDyn_CC.iIdCategoriaLineare

    FROM
    Modulo_DataDyn_Entita_7,
    Modulo_DataDyn_CC

    WHERE
    Modulo_DataDyn_Entita_7.Field49='Press' AND
    Modulo_DataDyn_CC.iIdCategoriaLineare =
    $id_argomento AND
    Modulo_DataDyn_CC.iIdCompilazione = Modulo_DataDyn_Entita_7.iId"

    $result_notizie = mysql_query($tab_notizie);

    while (
    $riga = mysql_fetch_assoc($result_notizie)) {

    $id_notizia=$riga["iId"];
    $nome_notizia=$riga["Field52"];


    echo
    "$id_notizia $nome_notizia <br />";
    }
    //while
    ma ovviamente (a parte non funzinare) il valore di quel $id_argomento non viene preso dalla query precedente e nemmeno è corretto per la struttura che deve avere il risultato, cioè la stampa delle informazioni per ogni argomento.

    Quindi ho pensato di fare una funzione dentro al while della prima query:
    perOgniArgomento($id_argomento, $nome_argomento);

    e poi eseguire la stampa dei valori tramite la funzione:
    Codice PHP:
    function perOgniArgomento($id_argomento, $nome_argomento)
    {
    //fare qualcosa...
    }
    dovrei mettere la seconda query nella funzione? Perchè comunque non funziona... :(

  2. #2
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    Hai provato con JOIN?
    Ad esempio leggi http://www.studiamo.it/dispense/info...i-tabelle.html


    -- Aut Roma Aut Nihil!

  3. #3
    Guest

    Predefinito

    ci ho riguardato a mente fresca e la query è venuta fuori da sola (quasi) :D
    grazie per l'esempio di JOIN!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •