我有一个项目表,其中projectId为主键:
**projectId**, projectName, dateCreated, etc.
然后,我有一个使用复合主键的userAccess表:
**userId**, **projectId**
只有每个项目的userAccess表中列出的用户才能查看项目。
现在,我正在尝试编写一个MySQL查询,这将允许我从项目表中获取具有id USER_ID的用户可以访问的项目列表。我已经尝试了几个小时了,虽然我猜我必须在这里加入,但我无法理解这一点。任何帮助非常感谢:)
答案 0 :(得分:1)
SELECT project.projectId, project.projectName
FROM project
INNER JOIN userAccess
ON project.projectId=userAccess.projectId
WHERE userAccess.userId = ?
答案 1 :(得分:1)
不熟悉MySQL的SQL品牌,但以下任何一种都应该有效:
SELECT *
FROM userAccess u
INNER JOIN project p on p.projectId = u.projectId
WHERE u.userId = USER_ID
...或
SELECT *
FROM userAccess u, project p
WHERE p.projectId = u.projectId
AND u.userId = USER_ID
答案 2 :(得分:1)
只是给子查询替代:
SELECT projectId, projectName
FROM project
WHERE projectId IN
(
SELECT projectId
FROM userAccess
WHERE userId = YOUR_USER_ID
)
这可能比JOIN选项效率低,但非常易读。