我有3个MySQL表,奖杯,获胜者和LinkTable我需要以一种方式输出的结果,每个奖杯的所有以前的获胜者将列出每个奖杯,因为目前每个结果只是循环给我一个吨的数据。
Trophies Winners LinkTable
-------- --------- ---------
TrophyID WinnerID LT_WinnerID
TrophyName WinnerName LT_TrophyID
Description Year
ImageSQL连接如下所示
$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循环,我需要使用它来为奖杯创建一个数组,但我现在有点困在想法上了,因为我发现的一切似乎都没有多大意义,所以如果有人给我指出正确的方向,我将非常感激。
发布于 2014-11-11 08:30:46
您可以将您的数据重新排序到一个按奖杯和年份索引的二维数组中。
$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数组来输出给定奖杯的所有获奖者或给定年份的所有获奖者。
https://stackoverflow.com/questions/26854434
复制相似问题