Ian*_*Ian 5 php mysql group-by
这是早期问题的更高级续集.
我需要返回类似的内容(对于每个位置):
底层
---------------
车库
- 散热器
厨房
- 电磁炉
- 冰箱
将会有更多的水平,但如果我能够开始,我希望能够根据需要进一步发展.
谢谢
由于 SQL 无法返回上面格式化的嵌套记录,因此您只需返回一个查询,该查询按楼层然后按 sub_location 对行进行排序。每行都会得到 和location,sub_location但在打印结果时的应用程序代码循环中,您可以按照上面的方式设置它们的格式。
SELECT
location.location_name,
sublocation.sub_location_name,
asset.asset_name
FROM
location
LEFT JOIN sub_location ON location.location_key = sublocation.location_key
LEFT JOIN assets ON sub_location.sub_location_key = assets.sub_location_key
ORDER BY
location.location_name,
sub_location.sub_location_name
Run Code Online (Sandbox Code Playgroud)
当在应用程序中循环遍历行集时,您仅在新位置或 sub_location 发生更改时打印它。格式化是在代码中完成的。
假设您的行都在数组中$rowset:
// Store location, sub_location for each loop
$current_loc = "";
$current_subloca = "";
foreach ($rowset as $row) {
// If the location changed, print it
if ($row['location'] != $current_loc) {
echo $row['location_name'] . "\n";
// Store the new one
$current_loc = $row['location_name'];
}
// If the sub_location changed, print it
if ($row['sub_location'] != $current_subloc) {
echo $row['sub_location_name'] . "\n";
$current_subloc = $row['sub_location_name'];
}
echo $row['asset_name'] . "\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |