Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3

    [MySql] Join su più campi tra le stesse tabelle

    Allora ho la tabella docenti che contiene nei campi corso1_id, corso2_id, corso3_id, corso4_id - gli id delle varie materie che il docente insegna
    la tabella corsi con le specifiche dei corsi totali

    La seguente query associa al cognome del docente il corso1 ma io vorrei che mi restituisse anche i nomi del corso2, corso3 e corso4

    SELECT docenti. cognome , corsi.nome AS corso1
    FROM
    pm_docenti JOIN corsi
    ON docenti.corso1_id = corsi.id_corso

    Grazie a coloro che si cimenteranno
    -------
    -------
    SMIK --
    -------

  2. #2
    direi che la struttura potrebbe essere migliorata.

    hai una tabella corsi, una tabella docenti sarebbe opportuno costruire anche una tabella di associazione tra corsi e docenti.

    Altrimenti ti trovi nel rapporto molti a molti dove molti docenti fanno molti corsi e molti corsi sono fatti da molti docenti.

    tabella di unione

    id_unione - id_corso - id_docente

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3
    in effetti dovrebbe essere la strada più corretta, con le mie limitate conoscenze di sql ho sperimentato anche un po' con UNION ma senza risultati.
    Per evitare lavoro manuale su molti records ho popolato la tabella gentilmente consigliata con qualche riga di php, la posto nel caso possa essere utile a qualcuno.

    Grazie


    codice:
    <?php 
    
    /* creare prima la tabella unione: corsi_docenti 
    con i campi: id_unione - id_corso - id_docente
    */
    /*
    CREATE TABLE corsi_docenti (
    id_unione INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    id_corso INT( 4 ) NOT NULL ,
    id_docente INT( 4 ) NOT NULL
    )
    */
    
    $tabella_unione="corsi_docenti";
    $tabella_docenti="docenti";
    
    
    require_once('../Connections/conn.php'); //connessione al DB
    
    $sqldocente="
    SELECT id, corso1_id, corso2_id, corso3_id, corso4_id FROM ".$tabella_docenti."
    ";
    $ResultDocente = mysql_query($sqldocente, $conn) or die(mysql_error());
    
    while ($docente=mysql_fetch_array($ResultDocente)) {
        
        $i=1;
        while ($i<=4) {
        if ($docente["corso".$i."_id"]!="") {
        $sql="
        INSERT INTO ".$tabella_unione."  (id_corso, id_docente)
        VALUES (".$docente["corso".$i."_id"]." , ".$docente["id"].")
        ";
        echo $sql;
        $Result = mysql_query($sql, $conn) or die(mysql_error());
        echo " - record".$i." inserito!
    ";
        }//end if
        $i++;
        }//end while
        
        
        }//end while
    
    echo "<h1>Fine dell'inserimento dei record</h1>";
    -------
    -------
    SMIK --
    -------

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.