Hej, försöker mig på att hämta data utifrån en relationstabell. Tycker att denna kod borde fungera men det gör den inte.
Jag hämtar först alla skådespelare, sedan är tanken att jag i relationstabellen som innehåller actorId och movieId ska hämta alla filmer som skådespelaren medverkar i. Jag kan inte hitta några fel i denna kod, eller kanske tänker jag helt fel logiskt sett?
Har följande kod:
<?php
$query = "SELECT * FROM actor ORDER BY firstName ASC";
$result = mysql_query($query);
while($r = mysql_fetch_assoc($result))
{
$actorId = $r['actorId'];
$firstName= $r['firstName'];
$lastName = $r['lastName'];
echo "<tr>";
echo "<td>" .$firstName. "</td>";
echo "<td>" .$lastName. "</td>";
echo "<td>";
$queryActor = "SELECT movieId FROM rel_actor WHERE actorId='".$actorId."'";
$resultActor = mysql_query($queryActor);
while ($r2 = mysql_fetch_assoc($resultActor))
{
$movieId = $r2['movieId'];
$queryMovie = "SELECT * FROM movie WHERE movieId='".$movieId."'";
$resultMovie = mysql_query($queryMovie);
$r3 = mysql_fetch_assoc($resultMovie);
$title = $r3['title'];
echo $title;
}
echo "</td>";
echo "</tr>";
}
?>
Hur skulle detta kunna se ut? Har försökt mig på join-satser förut, men har aldrig riktigt greppat det hela.
Kör en SQL-fråga som denna:
SELECT a.*, m.*
FROM actor a
INNER JOIN rel_actor r
ON r.actorId = a.actorId
INNER JOIN movie m
ON m.movieId = r.movieId
ORDER BY a.firstName ASC
Sedan får du fixa till presentationen i PHP så du får utskrifterna som du vill ha dem - ex. bara skriva ut skådespelaren en gång och sedan en lista på filmerna.
Prova att köra SQL-frågan direkt i phphmyadmin (eller vad du nu använder för att administrera databasen). Kanske har jag (eller du) skrivit fel på något tabell- eller fältnamn i frågan.
Hej, och tack för all hjälp! När jag testade att köra din sql-fråga i phpmyadmin så upptäckte jag att den klagade på att en kolumn inte fanns, hade skrivit moveId istället för movieId i databastabellen... :r