我在网页上有一个时间表编辑器,我需要通过使用CLASS ID来选择时间表,并通过USER.CLASS ID = CLASS ID在该类别中的所有用户来选择TIMETABLE,然后从这些用户中获得具有GROUP ID和获取具有组ID的所有时间表。对不起,我的解释知识。
用户通过cid链接到类。 userGroup只是uid和gid。 时间表同时包含cid和gid。当first为null时,给出第二个。
我在下面尝试了代码,以及所有似乎无法正常工作的所有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个来自班级,2个来自不同组,这些组分别连接到按班级连接的用户。我还希望使用受尊重的ID(例如,gid,cid)来自GROUP的名称和来自CLASS的名称。如果cid为null,是否还有办法在className上获取NULL?
答案 0 :(得分:0)
我遵循@ spencer7593的建议,仅使用“新语法” 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'