Nieuw lid |
|
Hallo
Ik heb 3 tabellen, nl film, genre en filmgenre (die laatste is een tussentabel want een film kan meerdere genres bevatten)
Ik wil nu de genres weergeven per film, en als er meerdere genres per films zijn, moet dit bijvoorbeeld zo weergegeven worden: "Actie / Thriller"
Eerst had ik dit zo opgelost:
$sql_genre = mysql_query("SELECT genre_naam FROM genre WHERE genre_id IN (SELECT genre_id FROM filmgenre WHERE film_id = '" . $row_film['film_id'] . "') ORDER BY genre_naam ASC");
$sql_genre = mysql_query("SELECT genre_naam FROM genre WHERE genre_id IN (SELECT genre_id FROM filmgenre WHERE film_id = '" . $row_film['film_id'] . "') ORDER BY genre_naam ASC");
maar mijn hosting ondersteunt geen subqueries, dus ik kan deze niet gebruiken, daarom heb ik de querie dan opgesplitst in 2 queries, nl:
$result_genre_id = mysql_query("SELECT genre_id FROM filmgenre WHERE film_id = $filmid");
while ($rowgenre_id = mysql_fetch_row($result_genre_id))
{
$tempgenre = $rowgenre_id[0];
$result_genre = mysql_query("SELECT genre_naam FROM genre WHERE genre_id = $tempgenre");
while ($rowgenre = mysql_fetch_row($result_genre))
{
if ($genre <> "")
{
$genre .= " / " . $rowgenre[0];
}
else
{
$genre = $rowgenre[0];
}
}
}
$result_genre_id = mysql_query("SELECT genre_id FROM filmgenre WHERE film_id = $filmid"); { $tempgenre = $rowgenre_id[0]; $result_genre = mysql_query("SELECT genre_naam FROM genre WHERE genre_id = $tempgenre"); { if ($genre <> "") { $genre .= " / " . $rowgenre[0]; } else { $genre = $rowgenre[0]; } } }
probleem hierbij is dat ik niet meer kan sorteren op genre_naam, dus
Actie / Thriller wordt getoond als Thriller / Actie omdat thriller eerder was toegevoegd
dus heb ik het terug met 1 querie geprobeerd door middel van een INNER JOIN, maar de onderstaande code wil niet echt werken:
$sql_genre = mysql_query("SELECT g.genre_naam FROM genre g INNER JOIN filmgenre fg ON fg.genre_id=g.genre_id WHERE fg.film_id = '" . $row_film['film_id'] . "' ORDER BY g.genre_naam ASC");
$sql_genre = mysql_query("SELECT g.genre_naam FROM genre g INNER JOIN filmgenre fg ON fg.genre_id=g.genre_id WHERE fg.film_id = '" . $row_film['film_id'] . "' ORDER BY g.genre_naam ASC");
iemand enig idee wat er verkeerd is aan de laatste querie ?
|