SELECT p.name AS prize, c.name AS contestant FROM contestants c
INNER JOIN entries e ON c.id = e.contestant_id
INNER JOIN prizes p ON e.prize_id = p.id
ORDER BY p.id
Это даст вам результат:
prize 1 | contestant 1.1
prize 1 | contestant 1.2
...
prize 1 | contestant 1.n
prize 2 | contestant 2.1
prize 2 | contestant 2.2
...
prize 2 | contestant 2.n
....
prize m | contestant m.n
Если вы хотите иметь такой список:
prize 1
contestant 1.1
contestant 1.2
...
contestant 1.n
prize 2
contestant 2.1
contestant 2.2
...
contestant 2.n
Вы должны отформатировать результат в PHP.
Это может быть что-то вроде этого:
$old_prize = '';
$result = mysql_query(<above query>);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
if($old_prize != $row["prize"]) {
$old_prize = $row["prize"];
echo "Prize: ".$row["prize"].'<br />';
}
echo $row["contestant"].'<br />;
}