Ciao a tutti. In un sito internet che sto realizzando ho due tabelle, canzoni e artisti. Nella pagina voglio far apparire tutte le canzoni, quindi "SELECT * FROM canzoni" e fin qui ok. Considerando che ogni canzone potrebbe avere più artisti, prevedo di inserirne un massimo di 3.
Le due tabelle hanno quindi diversi campi, tra cui quelli chiamati in causa sono i seguenti.
___CANZONI:
id_canzone (INT PRIMARY AUTO INCREMENT)
id_artista_uno (INT)
id_artista_due (INT)
id_artista_tre (INT)
___ARTISTI
id_artista (INT PRIMARY AUTO INCREMENT)
nome_artista (VARCHAR)
Supponiamo che l'artista Michael Bublé abbia, nella tabella ARTISTI, id_artista numero '5'.
Tramite pannello admin creato precedentemente, inserisco una canzone con titoli, album, ecc e quando scelgo l'artista, dal menù a tendina (SELECT * ALL FROM artisti) scelgo Michael Bublé. In CANZONI, nel campo id_artista_uno mi va a riversare il '5'. Se la canzone ha altri artisti, faccio la stessa cosa e riverso un numero per i vari id_artista_due e id_artista_tre.
Nel frontend, quando faccio partire un ciclo while con "SELECT * FROM canzoni", quindi, vorrei che PHP intercettasse l'id_artista_uno di CANZONI, che in questo caso è 5, e andasse in ARTISTI a selezionare l'id_artista 5 con nome_artista Michael Bublé, in modo che io possa fare echo $array[nome_artista] e vedere il nome di Michael Bublé, non il suo numero (id_artista).
Ulteriore problematica è che questo dovrebbe farlo anche per id_artista_due e id_artista_tre durante il ciclo while.
Alla fine di tutto questo marasma il risultato è semplice.
Artistauno feat. Artistadue and Artistatre.
Qualcuno mi ha suggerito di utilizzare LEFT JOIN nella selezione. Purtroppo io non conosco l'argomento e anche se sto provando a studiarlo faccio un po' fatica a capirne la teoria. Vorrei passare alla pratica con voi, così da facilitare la comprensione.
Spero di aver esposto il mio problema nel modo più esauriente possibile.. grazie in anticipo.