gpt4 book ai didi

mysql - 从多个表中进行多个 JOIN 的 SELECT

转载 作者:行者123 更新时间:2023-11-29 16:02:39 26 4
gpt4 key购买 nike

我在网页上有一个时间表编辑器,我需要通过使用 CLASS ID 以及通过 USER.CLASS ID = CLASS ID 属于该类的所有用户来选择 TIMETABLE,并从该用户获取具有 GROUP ID 和获取所有带有组 ID 的时间表。抱歉我的解释知识。

用户通过 cid 链接到类(class)。userGroup 只是 uid 和 gid。时间表有 cid 和 gid。当第一个为空时,给出第二个。

我已经尝试过下面的代码,以及所有 JOIN 的许多组合,但我似乎无法正常工作

SELECT DISTINCT
`timetable`.*,
`group`.name AS groupName,
`class`.name AS className
FROM
`timetable`,
`user`,
`userGroup`
LEFT OUTER JOIN `group` ON `userGroup`.gid = `group`.gid
LEFT OUTER JOIN `class` ON `class`.cid = '1'
WHERE
`user`.cid = 1 AND `userGroup`.uid = `user`.uid AND(
`timetable`.gid = `group`.gid OR `timetable`.cid = '1'
)

我预计输出有 3 个时间表。 1 个来自类(class),2 个来自不同组,这些组连接到按类(class)连接的用户。我还想要一个来自 GROUP 的名称和一个来自 CLASS 的名称,其中一个名称来自受尊敬的 ID,即(gid、cid)。如果 cid 为 null,是否有办法在 className 上获取 NULL?

最佳答案

我遵循@spencer7593的建议,仅使用“new-syntax”JOIN。

SELECT DISTINCT
`timetable`.*,
`group`.name AS groupName,
`class`.name AS className
FROM
`timetable`
JOIN `user` ON `user`.cid = 1
JOIN `userGroup` ON `userGroup`.uid = `user`.uid
LEFT JOIN `group` ON `userGroup`.gid = `group`.gid AND `timetable`.cid IS null
LEFT JOIN `class` ON `class`.cid = '1' AND `timetable`.gid IS null
WHERE
`timetable`.gid = `userGroup`.gid OR `timetable`.cid = '1'

关于mysql - 从多个表中进行多个 JOIN 的 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56046026/

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