【发布时间】:2023-04-01 05:05:01
【问题描述】:
我有 3 张桌子.. 说。
- 用户
(id,name,role_id(FK to roles) - 工作人员
(id,name,user_id(FK to users) - 角色
(id,name) - 学生
(id,name,user_id(FK to users)
我需要这样的结果:
当用户是学生(roleid=5)时,我需要加入学生表并获取学生详细信息。或者当用户是员工(role_id=3)时,我只需要从员工表中获取详细信息并显示。怎么可能。
我写了一个查询,它留下了 2 个表的连接,但它显示了其他不参与这种情况的表。
我在这里分享我遇到的问题
select *
from users u
JOIN roles r on u.role_id=r.id
left join staff st on st.user_id=u.id
left join students s on s.user_id=u.id
where u.id=11068
role_id=3:staff 和 role_id=5 student 类似于 C 编程中的 switch case
我要找的是那个
switch(role_id){ case 3: JOIN with students table;return;case 5:JOIN with staff table;return;}
【问题讨论】:
-
更新您的问题添加适当的数据样本和预期结果
-
我相信这个问题大家都很清楚
-
如果只有员工或学生匹配,则在 SELECT 中使用 COALESCE。
标签: mysql sql node.js database