Visualizzazione dei risultati da 1 a 2 su 2

Discussione: INNER JOIN

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    140

    INNER JOIN

    Ho 3 tabelle :
    Tabella 1 (Contiene il campo cantanti)
    id_cantante=1 nome=Edoardo Bennato
    id_cantante=2 nome=Vansco Rossi
    id_cantante=3 nome=Zucchero

    Tabella 2 (Contiene il campo dischi)
    id_cantante=1 id_disco=1 nome_album=Disco Bennato
    id_cantante=2 id_disco=2 nome_album=Disco Vasco
    id_cantante=3 id_disco=3 nome_album=Disco Zucchero

    Tabella 3 (Contiene il campo brani)
    id_disco=1 titolo=Brano1 bennato
    id_disco=1 titolo=Brano2 bennato
    id_disco=1 titolo=Brano3 bennato
    id_disco=2 titolo=Brano1 vasco
    id_disco=3 titolo=Brano1 zucchero

    le tabelle 1 e 2 sono legate da id_cantante
    le tabelle 2 e 3 sono legate da id_disco

    dovrei fare una query che mi restituisca il nome del disco, i brani contenuti ed il cantante.
    Usando questa query :

    $t=mysql_query("SELECT tabella1.nome, tabella2.nome_album, tabella3.titolo FROM tabella1 INNER JOIN tabella2 ON tabella1.id_cantante=tabella2.id_cantante INNER JOIN tabella3 ON tabella3.id_disco=tabella2.id_disco WHERE tabella2.id_disco='1'");

    while($dati=mysql_fetch_array()){
    echo"$dati[nome] - $dati[nome_album] - $dati[titolo]
    ";
    }

    Facendo scrivere il risultato però mi scrive:
    Bennato - Disco1 Bennato - Brano1 Bennato
    Bennato - Disco1 Bennato - Brano2 Bennato
    Bennato - Disco1 Bennato - Brano3 Bennato

    ovviamente 3 righe perchè il disco di bennato ha 3 brani. Come faccio a farmi scrivere una sola riga per il nome dell'album ed il nome del cantante e poi più righe per quanti sono i brani ? Devo usare per forza 2 query distinte ?

  2. #2
    Potresti fare così: inserisci un contatore in questo modo:

    Codice PHP:
    $i 0;
    while (
    $dati=mysql_fetch_array())
         {
            
    // Se è il primo ciclo va
            // stampato anche il nome del disco
            
    if ($i == 0)
              {
                echo 
    $dati['nome'] . '
    '
    ;
              }

            
    // Stampo gli altri dati
            
    echo $dati[nome_album] . 
                 
    ' - ' 
                 
    $dati[titolo] . 
                 
    '
    '
    ;
            
            
    // Incremento il contatore di 1
            
    $i++;
         } 
    Così otterrai ciò che vuoi. Ciao!

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.