2009-09-06 2 views
1

У меня есть таблица проекта с ProjectID в качестве первичного ключа:SQL-запрос для извлечения проектов, которые пользователь имеет доступ к

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

Тогда у меня есть таблица userAccess с использованием составного первичного ключа:

**userId**, **projectId** 

Только пользователи, перечисленные в таблице userAccess для каждого проекта, смогут просматривать проекты.

Теперь я пытаюсь написать запрос MySQL, который позволит мне получить список проектов из таблицы проектов, к которым имеет доступ пользователь с идентификатором 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 
    ) 

Это i вероятно, менее эффективен, чем опция JOIN, но очень читабельна.

+0

Да, это очень просто! Благодаря :) – philly77

Смежные вопросы