我认为这可能更像是PHP而不是SQL,因为我得到的结果是正确的。对于如何实现我所需要的格式,我的头脑是空白的。
我有两张桌子:
privilege;
+--------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------------------+------+-----+---------+----------------+
| privilege_id | bigint(20) | NO | PRI | NULL | auto_increment |
| privilege_group_id | bigint(20) | NO | | NULL | |
| privilege_name | varchar(255) | NO | | NULL | |
+--------------------+---------------------+------+-----+---------+----------------+
privilege_group;
+----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+----------------+
| privilege_group_id | bigint(20) | NO | PRI | NULL | auto_increment |
| privilege_group_name | varchar(255) | NO | | NULL | |
+----------------------+--------------+------+-----+---------+----------------+我需要像这样输出查询的结果:
特权组名称
另一个特权组名称
我的查询返回正确的结果:
SELECT privilege_group.privilege_group_name, privilege.privilege_name FROM privilege LEFT JOIN privilege_group ON privilege.privilege_group_id = privilege_group.privilege_group_id ORDER BY privilege_group.privilege_group_id ASC我只是不太确定如何在每个孩子的第一个结果之后忽略特权组的名称。我明白这一点:
特权组名称
特权组名称
另一个特权组名称
另一个特权组名称
我知道我可以通过两个查询循环实现这一点,但上面的返回正确的数据,我只是不知道如何处理它!
编辑:
<?php
try {
$rnum = '';
$stmt = $dbh->prepare("SELECT privilege_group.privilege_group_name,privilege.privilege_name
FROM privilege
LEFT JOIN privilege_group ON privilege.privilege_group_id = privilege_group.privilege_group_id
ORDER BY privilege_group.privilege_group_id ASC");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$rnum++;
// I know I need some conditional around this to only show it once per group!
if () {
echo "<b>$row[privilege_group_name]</b><br />";
//
}
echo "$row[privilege_name]<br />";
}
}
catch(PDOException $e){
echo 'Error : '.$e->getMessage();
exit();
}
?>发布于 2014-05-14 21:10:33
首先,将privilege_group.privilege_group_id添加到SELECT语句中,然后:
<?php
try {
$stmt = $dbh->prepare(
"SELECT privilege_group.privilege_group_id,
privilege_group.privilege_group_name,
privilege.privilege_name
FROM privilege
LEFT JOIN privilege_group ON
privilege.privilege_group_id = privilege_group.privilege_group_id
ORDER BY privilege_group.privilege_group_id ASC");
$last_group_id = -1;
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($last_group_id != $row['privilege_group_id']) {
echo "<b>" . $row['privilege_group_name'] . "</b><br />";
$last_group_id = $row['privilege_group_id'];
}
echo $row['privilege_name'] . "<br />";
}
} catch(PDOException $e) {
echo 'Error : '. $e->getMessage();
exit();
}
?>https://stackoverflow.com/questions/23664853
复制相似问题