我有3张桌子notificationsnot_id | not_name ------------------------- 2 | Notification Name 01 3 | Notification Name 02 4 | Notification Name 03 groupsgroup_id | group_name ------------------------- 4 | group name 1 5 | group name 2 group_not---------------------------group_not_id | group_id | not_id --------------------------- 1 | 4 | 2 2 | 4 | 3 3 | 5 | 4 我想显示与 group_id = 4 的组相关的所有通知但 php 端显示重复如下:Notification NameNotification Name 01 Notification Name 01 Notification Name 02 Notification Name 02MYSQL代码function getRows_not_group($group_id){ global $conn;$sql = "SELECT group_not.group_not_id, notifications.not_name, groups.group_name FROM group_not JOIN groups ON group_not.group_id = $group_id JOIN notifications ON group_not.not_id = notifications.not_id WHERE group_not.group_id = $group_id"; $result = mysqli_query($conn, $sql); if(!$result) { echo mysqli_error($conn); } $rows = []; if(mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } } return $rows;}
2 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
groups需要修复引入表的连接条件。
你有:
SELECT ...
FROM group_not
JOIN groups ON group_not.group_id = $group_id --> here
JOIN notifications ON group_not.not_id = notifications.not_id
WHERE group_not.group_id = $group_id
虽然您实际上需要:
JOIN groups ON group_not.group_id = groups.group_id
我还建议使用表别名来使查询更易于读写。您还应该使用参数化查询,而不是连接查询字符串中的变量。所以:
SELECT gn.group_not_id, n.not_name, g.group_name
FROM group_not gn
INNER JOIN groups g ON gn.group_id = g.group_id
JOIN notifications ON gn.not_id = n.not_id
WHERE gn.group_id = ?
郎朗坤
TA贡献1921条经验 获得超9个赞
我建议您使用 SELECT DISTINCT 如下:
SELECT DISTINCT group_not.group_not_id, notifications.not_name, groups.group_name FROM group_not JOIN groups ON group_not.group_id = $group_id JOIN notifications ON group_not.not_id = notifications.not_id WHERE group_not.group_id = $group_id";
SELECT DISTINCT 语句用于仅返回不同(不同)的值。
- 2 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消