我在过去几天一直试图让它工作......我知道我需要做什么,而且我知道我需要使用相关的子查询来实现它,但是我之前从未使用过相关子查询,最后被告知子选择返回多行...请问有人比我更聪明告诉我我做错了什么?
我有三个单独的表:
hh_content_creator_jobs - Holds jobs assigned to content creators (using their user id) on our club's website, as well as the id of the last person who edited the item (which may be differen!)
hh_content - Holds content items which the content creators can edit
hh_user_new - Holds a list of usernames and user ranks
所以,我一直在反对以下问题:
SELECT ccj.content_id, c.title AS page_title, un.username, ccj.assigned_date, ccj.job_status, ccj.last_edit, (SELECT un.username FROM hh_user_new, hh_content_creator_jobs WHERE un.id = ccj.last_edit_by) AS last_edit_by
FROM hh_content_creator_jobs ccj, hh_content c, hh_user_new un
WHERE ccj.content_id = c.id
AND un.id = ccj.assigned_to
ORDER BY ccj.assigned_to
它应该做的是选择内容ID,内容的标题,作业所分配的人的用户名,分配的日期,是否已完成,上次编辑的时候(不起作用的那一点!)上次编辑它的人的用户名。
这个最后的子查询给了我一些问题;它应该做的是从主查询中获取un.id并使用un.id在hh_users_new表中查找un.username ...它要做的是查找所有匹配的un.id列表......我只想要一个与存储在hh_content_creator_jobs中的用户ID匹配的那个...
我还考虑过使用LEFT JOIN,但是根据我们有时需要两个来自hh_user_new的sparate值 - 工作分配给的人的姓名和名称,我们无法使用LEFT JOIN。最后一个编辑项目的人......
有人可以帮助引导我朝正确的方向发展吗?
谢谢!
的Seb
答案 0 :(得分:0)
尝试一下:
SELECT ccj.content_id, c.title AS page_title, un.username, ccj.assigned_date, ccj.job_status, ccj.last_edit, (SELECT editor.username FROM hh_user_new editor WHERE editor.id = ccj.last_edit_by) AS last_edit_by
FROM hh_content_creator_jobs ccj, hh_content c, hh_user_new un
WHERE ccj.content_id = c.id
AND un.id = ccj.assigned_to
ORDER BY ccj.assigned_to