SQL查询 - 从另一个表获取名称

SQL查询 - 从另一个表获取名称

问题描述:

基本上我有2个表:uclk_useruclk_taskSQL查询 - 从另一个表获取名称

uclk_user表已经user_idnamepostcode

uclk_task表有user_idjob_iddescriptionfully_completeddate_due

我想在下面的任务查询中包含uclk_user的用户名... 显然,user_id是关键。

select job_id, user_id, fully_completed, description, date_due 
from uclk_task 
WHERE date_due <= NOW() AND fully_completed = 0 
ORDER BY date_due ASC 

这应该怎么做?

使用JOIN从多个表在一个共同的标准来选择

SELECT t.job_id, t.user_id, t.fully_completed, t.description, t.date_due, u.name 
FROM uclk_task t 
INNER JOIN uckl_user u 
ON t.user_id = u.user_id 
WHERE t.date_due <= NOW() AND t.fully_completed = 0 
ORDER BY t.date_due ASC 
+0

感谢您的回复快...我想你的建议,似乎得到一个错误。 SQL错误:字段列表中的列'user_id'不明确SELECT job_id,user_id,fully_completed,description,date_due FROM uclk_task INNER JOIN uclk_user ON uclk_task.user_id = uclk_user.user_id WHERE date_due user1625706

+0

它更适合使用表的别名,并将它们用于每列以避免将来出现问题。 +1用于显式连接。 – Sarwara

+0

@ user1625706:哦,是的。我的不好,你必须明确你想使用哪个'user_id'列(来自uckl_user或uckl_task),通过预先考虑表名或别名 – knittl

试试这个

select job_id, user_id, fully_completed, description, date_due 
    from uclk_task 
    Left join 
    on date_due <= NOW() AND fully_completed = 0 
    ORDER BY date_due ASC