gpt4 book ai didi

php - 如何在 PHP 中按单列对 SQL 连接的结果进行排序

转载 作者:行者123 更新时间:2023-11-29 15:06:52 25 4
gpt4 key购买 nike

我有一个包含位置列表的数据库,例如:

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>';

关于php - 如何在 PHP 中按单列对 SQL 连接的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1812950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com