2009-09-06 68 views
1

我有一個項目表專案編號項目作爲主鍵:SQL查詢,以提取用戶訪問

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

然後,我有使用複合主鍵的userAccess表:

**userId**, **projectId** 

只有userAccess表中爲每個項目列出的用戶才能查看項目。

現在,我正在嘗試編寫一個MySQL查詢,它將允許我從項目表中獲取項目列表,其中ID爲USER_ID的用戶可以訪問該列表。我一直在嘗試此操作幾個小時,儘管我猜測我必須在這裏加入,但我無法讓自己的想法繞過這一點。任何幫助非常感謝:)

回答

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 
1
SELECT project.projectId, project.projectName 
FROM project 
INNER JOIN userAccess 
ON project.projectId=userAccess.projectId 
WHERE userAccess.userId = ? 
1

只給子查詢替代方案:

SELECT projectId, projectName 
FROM project 
WHERE projectId IN 
    (
     SELECT projectId 
     FROM userAccess 
     WHERE userId = YOUR_USER_ID 
    ) 

This i可能比JOIN選項效率低,但非常可讀。

+0

是的,那很簡單!謝謝 :) – philly77 2009-09-07 09:41:09