MySQL加入不同的表格
问题描述:
我试图加入一个依赖于“task_type”列的值的不同表格MySQL加入不同的表格
语法有什么问题? 谢谢。
SELECT t.*,s.task_name
CASE
WHEN t.task_type = 0 THEN
LEFT JOIN scheduler_tasks s ON s.scheduler_task_id = t.task_id
WHEN t.task_type = 1 THEN
LEFT JOIN invoice_tasks s ON s.uid = t.task_id
END
FROM task_timings t
WHERE t.account_id = ? AND t.start_date >= DATE(?) AND t.start_date <= DATE(?)
答
我相信你想这样的:
SELECT t.*,
COALESCE(s.task_name, i.task_name) as task_name
FROM task_timings t LEFT JOIN
scheduler_tasks s
ON s.scheduler_task_id = t.task_id AND
t.task_type = 0 LEFT JOIN
invoice_tasks i
ON i.uid = t.task_id AND t.task_type = 1
WHERE t.account_id = ? AND t.start_date >= DATE(?) AND
t.start_date <= DATE(?);
+0
谢谢!一个小的调整是ON s.uid - 需要是ON i.uid – Dunams
答
你可以尝试这样的:
SELECT t.*,s.task_name FROM task_timings t
CASE
WHEN t.task_type = 0 THEN
LEFT JOIN scheduler_tasks s ON s.scheduler_task_id = t.task_id
WHEN t.task_type = 1 THEN
LEFT JOIN invoice_tasks s ON s.uid = t.task_id
END
WHERE t.account_id = ? AND t.start_date >= DATE(?) AND t.start_date <= DATE(?)
+0
Same - You have an您的SQL语法错误;检查与您的MariaDB服务器版本相对应的手册,以便在第2行“CASE WHEN t.task_type = 0 THEN LEFT JOIN scheduler_tasks s ON s.scheduler_task”时使用正确的语法,驱动程序错误代码为1064 – Dunams
可以显示错误? – Jenish
'FROM'必须在'LEFT JOIN'之前。 – 2017-07-19 10:18:15
@aendeerei之前,同样的错误你的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,查看'CASE WHEN t.task_type = 0 then THEN LEFT JOIN scheduler_tasks s ON s.scheduler_task'at line 2,driver error code is 1064 – Dunams