gpt4 book ai didi

php - 左连接右系统

转载 作者:行者123 更新时间:2023-11-29 00:01:06 26 4
gpt4 key购买 nike

我有一个:

-"user"-table (id, name, pass...)

-"groups"-table (id, name)

-"user_group"-table (id, iduser, idgroup)

-“菜单”-表(idnamegroups)

每个“菜单”点在组列中可以有“一个”组 ID。每个用户都可以有零个、一个或多个 idgroup...

user-table:
id, name
1, ingo
2, bernd

groups-table:
id, name
1, group1
2, group2
3, group3

user_groups-table
id, userid, groupid
1, 1, 1
2, 1, 3
3, 2, 1

所以 ingo 是 Group1 和 Group3 的成员,而 Bernd 只是 Group1 的成员

菜单表可以是这样的:id,名称,组,...1,Menupoint1,0(无组)2、菜单点2、33、菜单点3、2

有一个名为 $_SESSION["uid"] 的 Userid 注册 Session

因此,如果 ingo 已登录,他可以看到 Menupoint1 和 Menupoint2。不是 Menupoint3,因为他不是成员(member)...我想您知道我的意思...

我尝试了这种语法但没有得到我想要的结果:

$uid=$_SESSION[uid];
$stmt = $db->query("SELECT * from menu LEFT JOIN user_groups
ON menu.groups=user_groups.groupid
WHERE user_groups.groupid=? order by name");
$stmt->execute(array($uid));

你能给出一些正确方法的提示吗..

抱歉我的英语不好 - 我来自德国。但这似乎是我提出问题的最佳论坛 :))

最佳答案

将第二个表的条件从 where 子句移动到 on 子句:

SELECT *
from menu m LEFT JOIN
user_groups ug
ON m.groups = ug.groupid AND
ug.groupid = ?
order by name;

您的公式将 LEFT JOIN 转换为 INNER JOIN。当第二张表没有匹配时,groupid的值为NULL,比较失败。

关于php - 左连接右系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29795014/

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