我有3个MySQL桌子,奖杯,获胜者和LinkTable我需要以每个奖杯的所有先前获胜者将列在每个奖杯下的方式输出结果,因为目前每个结果只是循环给我一吨数据
Trophies Winners LinkTable
-------- --------- ---------
TrophyID WinnerID LT_WinnerID
TrophyName WinnerName LT_TrophyID
Description Year
Image
SQL Join如下
$trophylist = mysql_query("
SELECT TrophyID, TrophyName, Description, Image, WinnerID, WinnerName, Year
FROM LinkTable
INNER JOIN Winners ON (LinkTable.LT_WinnerID = Winners.WinnerID)
INNER JOIN Trophies ON (LinkTable.LT_TrophyID = Trophies.TrophyID)");
如果我通过while循环输出结果,正如预期的那样为每个获胜者返回一个新行,奖杯旁边就有奖杯。
我认为这是一个我需要使用的foreach循环,以便可以为奖杯创建一个数组,但我现在有点卡住了想法,因为我发现的所有东西似乎都没有多大意义所以任何人非常感谢我指向正确的方向。
答案 0 :(得分:1)
您可以将数据重新排序为二维数组,按奖杯和年份编制索引。
$n = mysql_num_rows($trophylist);
for ($i=0; $i<$n; $i++)
{
$row = mysql_fetch_array($trophylist);
$trophyId = $row['TrophyID'];
$year = $row['Year'];
$newlist["$trophyId"]["$year"] = $row;
}
然后,您可以轻松使用$ newlist数组输出给定奖杯的所有获胜者或特定年份的所有获胜者。