用于提取用户有权访问的项目的SQL查询

时间:2009-09-06 08:04:09

标签: sql mysql database

我有一个项目表,其中projectId为主键:

**projectId**, projectName, dateCreated, etc.

然后,我有一个使用复合主键的userAccess表:

**userId**, **projectId**

只有每个项目的userAccess表中列出的用户才能查看项目。

现在,我正在尝试编写一个MySQL查询,这将允许我从项目表中获取具有id USER_ID的用户可以访问的项目列表。我已经尝试了几个小时了,虽然我猜我必须在这里加入,但我无法理解这一点。任何帮助非常感谢:)

3 个答案:

答案 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选项效率低,但非常易读。