2014-09-02 25 views
0

我有三个表如何两个表结合起来,从不同的表格中的结果在MySQL

enter image description here

用户名:1​​231我试图让人们谁结果给我的访问。我的意思是他们的名字。

因此,根据上面的表格,我应该得到的结果为:

enter image description here

为了获取上述结果我尝试了几个疑问。其中之一是以下:

SELECT a.UserID, a.Mark1, a.Mark2, b.Name FROM details a, profile b WHERE a.UserID IN (SELECT UserID FROM Access WHERE GrantStatus = 'granted' and GrantUserID = '1231'); 

我得到下面的结果用于执行上面的查询:

enter image description here

有人可以帮我解决这一问题?

回答

2

你需要一个join条件:

SELECT d.userID, d.mark1, d.mark2, p.name 
FROM details d JOIN 
    profile p 
    ON d.userID = p.userId 
WHERE d.userID IN (SELECT userID 
        FROM access 
        WHERE grantstatus = 'granted' and grantuserID = '1231' 
       ); 

简单的规则:不要在from子句中使用逗号。为什么你做一个子选择VS另一加入

SELECT d.userID, d.mark1, d.mark2, p.name 
FROM details d JOIN 
    profile p 
    ON d.userID = p.userId JOIN 
    access a 
    on a.userId = d.userId 
WHERE a.grantstatus = 'granted' and a.grantuserID = '1231'; 
+0

@'戈登Linoff'好奇:

只能用join就做这个? – Dan 2014-09-02 15:53:22

+0

@ Gordon Linoff我得到表'myDATABASE.userId'不存在 – TheDevMan 2014-09-02 15:55:54

+0

@TheDevMan。 。 。在查询中没有这样的表达,所以我有点困惑它可能来自哪里。查询确实使用表别名。 – 2014-09-02 16:02:20

相关问题