这与我之前发布的一个问题有关,但不幸的是,我认为我的问题表述不够清楚,因为我没有得到问题的完整答案。
我有两张表,一张叫 Groups,一张叫 Items。我想做的是选择所有组,然后在每个组中选择所有项目,所以我最终得到这样的结果:
标题 1 <- 组
- 一个 <- 项目
- 两个 <- 项目
标题 2 <- 组
- 一个 <- 项目
- 两个 <- 项目
在我的原始帖子中,您可以看到我最初用于实现此目的的代码,它本质上是一个循环内的循环,首先选择所有组,然后选择组内的所有项目。我知道在 SQL 查询循环中使用 SQL 查询循环是个坏主意,因此感谢一些有用的 SO 成员,我现在有了以下代码:
$query = "SELECT g.ID AS GRPID, g.Description AS GrpDesc,i.ID AS ITEM_ID, i.Description AS ItemDescription
FROM Groups_Inv g
LEFT JOIN Items_Inv i
ON g.ID=i.grpID
ORDER BY g.SortNum ASC";
try {
$result = odbc_exec($connect,$query);
if($result){
while ($groups = odbc_fetch_array($result)) {
echo "<li title='".$groups['GrpDesc']."' class='category'>
<h3><span><a class='category'>".$groups['GrpDesc']."</a></span></h3>
<ul class='sub-menu'>\n";
echo "<li class='select'>
<input type='radio' class='addRow'>
<label for='".$groups['ITEM_ID']."'>
".$groups['ItemDescription']."
</label>
</li>\n";
echo "</ul>
</li>\n";
}
}
else {
throw new RuntimeException("Failed to connect.");
}
}
这将选择具有相应项目的所有组,但它不会将所有项目分组在其组标题下,因此我最终得到如下结果:
标题 1
- 一
标题 1
- 二
如何修改它,以便所有组仅列出一次,并且每个组的所有项目都正确列出在组标题下?