我有三张桌子
我 userID:1231。我正在尝试获取给予我访问权限的人的结果。我的意思是他们的名字标记。
所以,根据上表,我应该得到结果:
要获取上述结果,我尝试了一些查询。其中一个在下面:
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');
我得到以下结果来执行上述查询:
有人可以帮我解决这个问题吗?
答案 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';