gpt4 book ai didi

mysql - Moodle数据库的多个表之间的条件连接

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

我需要根据前一个表的输出在多个表之间创建一个联接查询。我尝试使用 case when 语句如下,但它显示错误!感谢任何形式的帮助

SELECT completion.userid, completion. coursemoduleid, completion. timemodified, 
module.course, user. idnumber as student_id, m.name as module_name, activity.name as activity_name
FROM `mdl_course_modules_completion` as completion

join mdl_course_modules as module
on completion. coursemoduleid = module.id

join mdl_user as user on user.id = completion.userid

join mdl_modules as m on completion. coursemoduleid = m.id

join
CASE WHEN module_name = 'assign'THEN 'mdl_assign'
WHEN module_name = 'assignment' THEN 'mdl_assignment'
ELSE "quiz"
END AS activity

on activity.id = m.id LIMIT 0, 30

enter image description here

最佳答案

不存在“条件连接”这样的东西。相反,您可以使用两个 LEFT JOIN 和 COALESCE():

SELECT completion.userid,
...
COALESCE(activity1.name, activity2.name) as activity_name -- SELECT first non NULL value
FROM `mdl_course_modules_completion` as completion
...
LEFT JOIN mdl_assign activity1
ON activity1.id = m.id -- JOIN condition
AND module_name = 'assign' -- CASE condition
LEFT JOIN mdl_assignment activity2
ON activity2.id = m.id -- JOIN condition
AND module_name = 'assignment' -- CASE condition

关于mysql - Moodle数据库的多个表之间的条件连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55243259/

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