[英]How do I sort the result of an SQL join by a single column in PHP
我有一个包含位置列表的数据库,例如:
C_ID | Name
1 | Italy
2 | Germany
3 | France
4 | Spain
在单独的表格中,列出了这些国家/地区的人,
P_ID | Name | C_ID
1 | John | 1
2 | Mark | 1
3 | Paul | 2
4 | Pierre | 3
5 | Alan | 2
我已经在带有联接的SQL查询中获取了这些数据...
SELECT locations.name as locaname, people.name as peoplename
FROM locations
INNER JOIN people
ON locations.c_id=people.c_id
ORDER BY locations.name";
这为我提供了:
Italy John
Italy Mark
Germany Paul
Germany Alan
France Pierre
但是,我试图实现的是一个无序列表,PHP回显了该列表。 用民族名称按国名分组 。 与国名重复不同。 我试过使用数组,但是我对PHP / MySQL的了解让我失望...
尝试:
$sql = <<<END
SELECT locations.name as locaname, people.name as peoplename
FROM locations
INNER JOIN people
ON locations.c_id=people.c_id
ORDER BY locations.name"
END;
$query = mysql_query($query) or die($sql . ' - ' . mysql_error());
$result = array();
while ($row = mysql_fetch_array($query)) {
$result[$row[0]][] = $row[1];
}
print_r($result);
$row[0]
是国家, $row[1]
是此人的名字。 while
循环中的功能在这里很关键。 这确实很多。 它基本上是在以国家/地区名称为键的结果数组中添加一个条目,并将此人的名字附加到存储在该数组中的人的名称。
编辑:以列表形式订购:
echo '<ul>';
foreach ($result as $country => $persons) {
echo "<li>$country\n<ul>\n";
foreach ($persons as $person) {
echo "<li>$person</li>\n";
}
echo "</ul></li>\n";
}
echo '</ul>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.