vermutlich ein Standardproblem, das man sauberer lösen kann, als ich es mache. Mir geht es im folgenden darum, meinen Code zu optimieren und ggf. etwas dazuzulernen.
Also folgendes mysql-Setting: Ich habe eine Tabelle "stuff" in der Informationen über CDs gespeichert sind, eine Tabelle "songs", in der Informationen über Lieder gespeichert sind, und eine Zuordnungstabelle "stuff_nn_songs", in der den CDs die auf ihnen enthaltenen Lieder zugeordnet werden. (CDs können mehrere Lieder haben und Lieder können auf mehreren CDs enthalten sein.)
Erreichen will ich eine Ausgabe im folgenden Stil:
CD1: Lied1, Lied2, Lied3
CD2: Lied4, Lied5, Lied6,
etc.
Dazu habe ich folgende (vermutlich sehr schlechte?) Abfrage geschrieben:
Code: Alles auswählen
$sql = "SELECT st.id, st.name, st. release_date, st. releases, st.medium, st.special, st.pic, so.song_name
FROM stuff st
LEFT JOIN stuff_nn_songs nn
ON st.id = nn.stuff_id
LEFT JOIN songs so
ON so.song_id = nn.song_id;"
$result = mysql_query($sql);
Code: Alles auswählen
$i = 0;
while($row = mysql_fetch_array($result))
{
$i++;
$some_array[$i]['name'] = stripslashes($row['name']);
$some_array[$i]['song_name'] = stripslashes($row['song_name']);
$some_array[$i]['release_date'] = stripslashes($row['release_date']);
$some_array[$i]['releases'] = stripslashes($row['releases']);
$some_array[$i]['medium'] = stripslashes($row['medium']);
$some_array[$i]['special'] = stripslashes($row['special']);
$some_array[$i]['pic'] = stripslashes($row['pic']);
}
Code: Alles auswählen
$i = 0;
while($row = mysql_fetch_array($result))
{
$i++;
$some_array[$row['id']]['name'] = stripslashes($row['name']);
$some_array[$row['id']]['song_name'][] = stripslashes($row['song_name']);
$some_array[$row['id']]['release_date'] = stripslashes($row['release_date']);
$some_array[$row['id']]['releases'] = stripslashes($row['releases']);
$some_array[$row['id']]['medium'] = stripslashes($row['medium']);
$some_array[$row['id']]['special'] = stripslashes($row['special']);
$some_array[$row['id']]['pic'] = stripslashes($row['pic']);
}
Weil ich ähnliche Abfragen öfters mal habe, wäre ich für Tipps dankbar, wie man sowas (mit mysql?) besser hinbekommt.
Danke
Christoph