如何组合两个表来获取MySQL中不同表的结果

时间:2014-09-02 15:48:08

标签: mysql sql phpmyadmin

我有三张桌子

enter image description here

userID:1231。我正在尝试获取给予我访问权限的人的结果。我的意思是他们的名字标记。

所以,根据上表,我应该得到结果:

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

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

1 个答案:

答案 0 :(得分: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子句中使用逗号。

您只能使用join s:

执行此操作
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';