У меня есть база данных MySQL, где у меня есть таблица User, Project и ProjectUser. Таблица ProjectUser имеет идентификатор UserID и ProjectID и отображает пользователя в проект. Я хочу иметь возможность запрашивать, какие проекты имеют два разных пользователя. Поэтому, если Боб принадлежит проектам A, B, C, D и Joe, они принадлежат проектам C, D, E, F ... тогда я хочу ВЫБРАТЬ информацию для проектов C и D, когда я знаю UserID Боба и Джо.SQL выбирает пользователей, принадлежащих к одному и тому же объекту
0
A
ответ
0
Вы можете выбрать проекты для userId1 и userId2 отдельно и, наконец, пересекая их, вы найдете проекты, в которых есть эти два пользователя! Для SQL сервера
select * from projects where PID IN
(select PID from ProjectUser PU1 where UserId = UserID1
INTERSECT
select PID from ProjectUser PU2 where UserId = UserID2)
и MYSQL вы пишете следующим образом:
select * from projects where PID IN
(select PID from ProjectUser PU1 where UserId = UserID1 and
PID In (select PID from ProjectUser PU2 where UserId = UserID2))
1
Предположим, что это метаданные и примеры, предоставленные вами.
create table User (UserID int, Name varchar(200));
create table Project (ProjectID int, Name varchar(200), Information varchar(200));
create table ProjectUser (UserID int, ProjectID int );
INSERT INTO User VALUE (1,'Bob'),(2,'Joe');
INSERT INTO Project VALUE (1,'A','First'),(2,'B','Second'),(3,'C','Third'),(4,'D','Fourth'),(5,'E','Fifth'),(6,'F','Sixth');
INSERT INTO ProjectUser VALUE (1,1),(1,2),(1,3),(1,4),(2,3),(2,4),(2,5),(2,6);
Предполагая, что записи в ProjectUser таблицы уникальны UserID и ProjectID, вы можете получить подробную информацию о проектах Боб и Джо акцию по:
SELECT Project.* FROM Project WHERE Project.ProjectID IN
(
SELECT Project.ProjectID
FROM ProjectUser
INNER JOIN User
ON User.UserID = ProjectUser.UserID
INNER JOIN Project
ON Project.ProjectID = ProjectUser.ProjectID
WHERE User.Name IN ('Bob','Joe')
GROUP BY Project.ProjectID
HAVING COUNT(*) > 1
)
Попробуйте на http://sqlfiddle.com/
Смежные вопросы
- 1. Доступ к одному и тому же объекту в разных действиях?
- 2. Убедитесь, что два поля принадлежат одному и тому же объекту
- 3. d3 - добавить два объекта к одному и тому же родителю
- 4. Несколько отношений «один ко многим» одному и тому же объекту
- 5. Сохранение нескольких атрибутов одному и тому же основному объекту данных
- 6. Синхронизация по одному и тому же объекту дважды
- 7. XMPP python: Отправить личное сообщение одному из нескольких пользователей, подключенных к одному и тому же jid
- 8. Присоединение к одному и тому же столу более одного раза
- 9. Ebean: @OneToMany к тому же объекту
- 10. Различные планы запросов к одному и тому же запросу!
- 11. Почему защищенные и частные атрибуты доступны одному классу, а не одному и тому же объекту?
- 12. Как я могу привязать и развязать уникальные прослушиватели событий к одному и тому же объекту?
- 13. Как получить данные для нескольких экземпляров, принадлежащих одному и тому же ключу?
- 14. SQL: пара людей, которые помогали одному и тому же событию
- 15. SQL Комбинации нескольких строк по одному и тому же идентификатору
- 16. Неопределенное поведение имеет два указателя с разными значениями, относящимися к одному и тому же объекту?
- 17. NullPointerException при отключении разных типов атрибутов к одному и тому же объекту java
- 18. JS - Как использовать `this` для обращения к одному и тому же объекту в разных областях?
- 19. Android, как получить доступ к одному и тому же объекту с помощью различных видов деятельности
- 20. YAML/SnakeYAML: как обращаться к одному и тому же объекту несколько раз
- 21. Как настроить отношение ко многим сущностям сущностей, но к одному и тому же объекту? EF6
- 22. Android: Как получить доступ к одному и тому же объекту во всех других классах без активности?
- 23. Как применить два разных вращения к одному и тому же объекту Blender?
- 24. Как поделиться некоторыми метаданными между несколькими аспектами, применяемыми к одному и тому же объекту?
- 25. Более одного обратного отношения к одному и тому же объекту в данных ядра
- 26. Два потока, обращающихся к одному и тому же объекту, создают неожиданный результат
- 27. Как можно получить доступ к одному и тому же объекту сеанса с двух разных страниц jsp?
- 28. Доступ к одному и тому же объекту во время запроса - asp.net
- 29. Как достичь эффекта отношения «два-ко-многим» к одному и тому же объекту из одного объекта?
- 30. предотвращение эффектов, применяемых к одному и тому же объекту дважды при добавлении объектов с помощью ajax
Это будет работать, но я использую базу данных MySQL и не поддерживает INTERSECT. –