我不知道这个问题的确切名称,所以请阅读示例和预期结果以澄清。
我需要一个查询,返回一些需要连接的数据的项目列表。我连接的一些数据数据可以是空的。让我展示一下我的实际查询:
SELECT p.projectid, p.projectname, p.date, u.name, u.surnames
FROM projects p
JOIN rel_user_proj rup ON rup.projectid=p.projectid
JOIN users u ON u.userid=rup.userid
WHERE rup.codrole='PM'表rel_user_proj具有项目和用户之间的关系。我可以有多个关系,但我只需要一个,所以我使用适合我的where rup.codrole='PM‘。
问题是,对于某些项目,这个表可能没有结果,但如果没有结果,我需要将u.name和u.surnames作为NULL获取。
我怎么能做到这一点?
提前谢谢你!
发布于 2011-02-21 18:22:04
开始吧..。我想这就是你的答案:)
SELECT DISTINCT
p.projectid
, p.projectname
, p.date
, tab.name
, tab.surnames
FROM
projects p
LEFT JOIN (
SELECT DISTINCT
rup.projectid
, u.name
, u.surnames
FROM users u
INNER JOIN
rel_user_proj rup
ON u.userid = rup.userid
) tab
ON p.projectid = tab.projectid哦..。下面是其中的PM子句。也是有效的。
SELECT DISTINCT
p.projectid
, p.projectname
, p.date
, tab.name
, tab.surnames
FROM
projects p
LEFT JOIN (
SELECT DISTINCT
rup.projectid
, u.name
, u.surnames
FROM users u
INNER JOIN
rel_user_proj rup
ON u.userid = rup.userid
AND rup.codrole='PM'
) tab
ON p.projectid = tab.projectid发布于 2011-02-21 16:56:38
LEFT JOIN将是您的最佳选择http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php
从项目p左选择p.projectid,p.projectname,p.date,u.name,u.surnames加入rel_user_proj rup ON rup.projectid=p.projectid加入用户u ON u.userid=rup.userid WHERE rup.codrole='PM‘
希望这能有所帮助
https://stackoverflow.com/questions/5063912
复制相似问题