gpt4 book ai didi

php - 循环从按关系排序和摸索的整个表中选择一个不同的行

转载 作者:行者123 更新时间:2023-11-29 18:31:30 25 4
gpt4 key购买 nike

在我的查询中

SELECT a.FirstName, a.LastName, a.Country, SUM(b.Scores) AS Score FROM names a LEFT JOIN scores b ON a.id = b.id WERE id = :id GROUP BY a.FirstName ORDER BY Score ASC

现在我想做的是获得一个Distinct国家/地区div,包含按Score排序的所有First/LastNames就像下面这样

[id  --  FirstName  -- LastName  --  Country]
[1 -- FName1 -- LName1 -- CO1 ]
[2 -- FName2 -- LName2 -- CO1 ]
[3 -- FName3 -- LName3 -- CO2 ]
[4 -- FName4 -- LName4 -- CO3 ]

像这样得到它

CO1: (FName1-LName1,FName2-LName2)
CO2: (FName3-LName3)
CO3: (FName4-LName4)

所以我使用这个循环来让它工作。

$pre = null;
echo "<div>";
$end = "";
while ($row = $stmt->fetch()) {
$FName = $row['FirstName'];
$LName = $row['LastName'];
$Country = $row['Country'];

if ($Country != $pre) {
echo $end;
echo "<div id='$Country'>$Country:";
echo "<div class='objects'>";
}
$end = "</div></div>";
$pre = $Country;
echo "<div>($FName - $LName)</div>";
}
echo $end;

它对我来说没问题,但是当我刷新时,我会再次重复 CO1,如果再次引用,它就会消失,并且一次又一次,如果我删除了 Scores 部分,它工作得很好,但随着它它不断重复。

最佳答案

如果首先在数组中创建分组结构,则可以使事情变得更容易,如下所示:

while ($row = $stmt->fetch()) {
$countries[$row['Country']][] = $row;
}

现在 $countries 每个国家/地区将有一个条目,而该条目又将包含相关行的数组。然后您可以按如下方式生成 HTML:

foreach ($countries as $country => $rows) {
echo "<div id='$country'>$country\n";
echo " <div class='objects'>\n";
foreach ($rows as $row) {
echo " <div>({$row['FirstName']} - {$row['LastName']})</div>\n";
}
echo " </div>\n</div>\n";
}

查看它在 eval.in 上运行.

关于php - 循环从按关系排序和摸索的整个表中选择一个不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45651296/

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