我有一個MySQL數據庫設置,我有一個用戶,項目和ProjectUser表。 ProjectUser表具有用戶標識和項目標識並將用戶映射到項目。我希望能夠查詢兩個不同用戶共同擁有的項目。所以如果Bob屬於項目A,B,C,D和Joe屬於項目C,D,E,F ...那麼當我知道Bob和Joe的用戶ID時,我想選擇項目C和D的信息。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
假設這是元數據和您提供的例子。
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
)
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表中的記錄是唯一由用戶名和專案編號,你可以得到的項目鮑勃和喬份額的細節
相關問題
- 1. 選擇不屬於另一個對象屬性的字符串
- 2. 選擇基於對象的屬性不同的ViewModels
- 3. 當一個屬性等於Max時使用NHibernate選擇對象
- 4. LINQ基於對象內列表中的屬性選擇對象
- 5. 如何選擇不屬於一個用戶組的用戶
- 6. SQL - 選擇屬於用戶「X」的項目列表
- 7. 選擇具有相同的一個屬性和不同的另一個對象
- 8. Laravel選擇對象屬性
- 9. Rails複雜的SQL屬於用戶的追隨者對象
- 10. MySQL:選擇屬於不同用戶的手機
- 11. 選擇屬性應用於SQL
- 12. 屬於同一類的另一個對象的anobject的屬性
- 13. 驗證對象屬於MVC/SQL中的用戶
- 14. 用戶選擇包含不同對象的文件
- 15. SQL選擇用戶
- 16. 按屬性或類型從一組對象中選擇對象
- 17. Rails - 根據用戶輸入選擇對象屬性
- 18. 如何根據用戶選擇顯示對象屬性?
- 19. 確定哪些對象屬於選擇矩形(選取框)
- 20. D3等同於jQuery的屬性選擇
- 21. 在SQL但僅限於時間段選擇不同的屬性
- 22. 屬於用戶對象的軌道rotum對象
- 23. 獲取選擇對象selectOneMenu用於PrimeFaces
- 24. Python的算法 - 基於對象列表,選擇對象的屬性
- 25. 選擇加入對象的屬性
- 26. 多個屬性的選擇對象
- 27. SQL選擇的不同的2列對
- 28. SQL:如何選擇一對有限重複的表對象用於每個對象?
- 29. C#/ LINQ選擇對象的子表具有相同屬性
- 30. 通過屬性選擇不同的嵌入對象
這將工作,但我正在使用MySQL數據庫,它不支持INTERSECT。 –