2013-03-05 100 views
0

是否可以通过INNER JOIN一个MySQL查询来实现这个结果?MySQL`INNER JOIN`同一表的倍数

我有一个表与策略和表与会员。 “策略”表包含与其成员表中的ID相对应的作者ID以及更新现有作者作品的作者ID。是否有可能同时获得这两个人的参考?像下面,不返回任何错误,但还没有结果......

SELECT * FROM Strategies 
INNER JOIN Members AS a 
INNER JOIN Members AS b 
WHERE Strategies.ID='2' 
AND Strategies.AuthorID = a.ID 
AND Strategies.UpdateAuthorID = b.ID 

回答

4

使用LEFT JOIN

SELECT 
    s.*, 
    a.Name AS MemberName, 
    b.Name AS UpdatedMemberName 
FROM Strategies AS s 
LEFT JOIN Members AS a ON s.AuthorID = a.ID AND s.ID = 2 
LEFT JOIN Members AS b ON s.UpdateAuthorID = b.ID AND s.ID = 2 ; 

如果你希望他们在一列中使用COALESCE

SELECT 
    s.*, 
    COALESCE(a.Name, b.Name) AS MemberName 
FROM Strategies AS s 
LEFT JOIN Members AS a ON s.AuthorID = a.ID AND s.ID = 2 
LEFT JOIN Members AS b ON s.UpdateAuthorID = b.ID AND s.ID = 2 
+0

我只需要将值赋给我的php变量,这样我就可以显示它们。所以最重要的应该是正确的? – SnareChops 2013-03-05 07:01:23

+0

@SnareChops两者都可以正常工作,第一个会为您提供两列'AuthorId',另一个列为'UpdatedAuthorId',但第二个查询只会给您一列;不可空的。 – 2013-03-05 07:15:40

4
SELECT toD.dom_url AS ToURL, 
    fromD.dom_url AS FromUrl, 
    rvw.* 

FROM reviews AS rvw 

LEFT JOIN domain AS toD 
    ON toD.Dom_ID = rvw.rev_dom_for 

LEFT JOIN domain AS fromD 
    ON fromD.Dom_ID = rvw.rev_dom_from 

如果域名是表名