Mysql 多对一或一对多
Mysql many to one OR one to many
我有点困惑,需要一些帮助。我有 3 tables.
User_Works_on
+---------+-------------+--+--+
| user_id | project_id | | |
+---------+-------------+--+--+
| 5812 | 1938026 | | |
| 6390 | 1938026 | | |
| 32088 | 1938026 | | |
| 62830 | 1938026 | | |
| 64436 | 1938026 | | |
| 64441 | 1938026 | | |
| 77969 | 1938026 | | |
+---------+-------------+--+--+
Follower_works_on
+-------------+---------+
| follower_id | repo_id |
+-------------+---------+
| 64441 | 1938026 |
| 64441 | 477331 |
| 64441 | 477331 |
| 6390 | 1938026 |
| 6390 | 1529732 |
| 6390 | 477331 |
| 6390 | 477331 |
+-------------+---------+
Follows_user
+---------+-------------+
| user_id | follower_id |
+---------+-------------+
| 5812 | 6390 |
| 5812 | 10561 |
| 5812 | 37664 |
| 5812 | 51794 |
| 6390 | 58 |
| 6390 | 302 |
| 6390 | 1340 |
| 6390 | 1471 |
| 6390 | 2316 |
| 6390 | 3448 |
| 64441 | 40399 |
| 64441 | 57411 |
| 64441 | 64111 |
| 64441 | 180542 |
| 64441 | 294196 |
+---------+-------------+
table User_works_on
显示用户正在处理的项目。 Follower_works_on
显示关注者从事的项目。 Follows_users
显示哪些用户是其他用户的关注者。如果 id 是任何用户的关注者,我想 link 两个项目。即我想在用户工作的项目和追随者工作的项目之间创建一个 link 假设它们之间存在追随者关系。
例如:
用户 5812 在项目 1938026 上工作
关注者 6390 在项目 1529732 上工作
关注者 6390 关注用户 5812
因此项目1938026和1529732之间有一个link。
我是 mysql 的新手,所以我不确定如何构建这种关系。任何想法都会很棒。
结果应该是这样的
+---------+-------------+-------------+-------------+
| User_id | project_id1 | project_id2 | Follower_id |
+---------+-------------+-------------+-------------+
| 5812 | 1938026 | 1938026 | 6390 |
| 5812 | 1938026 | 1529732 | 6390 |
+---------+-------------+-------------+-------------+
SELECT project_id, repo_id
FROM User_Works_on AS u
JOIN Follows_user AS fu ON u.user_id = fu.user_id
JOIN Follower_Works_on AS f ON fu.follower_id = f.follower_id
我有点困惑,需要一些帮助。我有 3 tables.
User_Works_on
+---------+-------------+--+--+
| user_id | project_id | | |
+---------+-------------+--+--+
| 5812 | 1938026 | | |
| 6390 | 1938026 | | |
| 32088 | 1938026 | | |
| 62830 | 1938026 | | |
| 64436 | 1938026 | | |
| 64441 | 1938026 | | |
| 77969 | 1938026 | | |
+---------+-------------+--+--+
Follower_works_on
+-------------+---------+
| follower_id | repo_id |
+-------------+---------+
| 64441 | 1938026 |
| 64441 | 477331 |
| 64441 | 477331 |
| 6390 | 1938026 |
| 6390 | 1529732 |
| 6390 | 477331 |
| 6390 | 477331 |
+-------------+---------+
Follows_user
+---------+-------------+
| user_id | follower_id |
+---------+-------------+
| 5812 | 6390 |
| 5812 | 10561 |
| 5812 | 37664 |
| 5812 | 51794 |
| 6390 | 58 |
| 6390 | 302 |
| 6390 | 1340 |
| 6390 | 1471 |
| 6390 | 2316 |
| 6390 | 3448 |
| 64441 | 40399 |
| 64441 | 57411 |
| 64441 | 64111 |
| 64441 | 180542 |
| 64441 | 294196 |
+---------+-------------+
table User_works_on
显示用户正在处理的项目。 Follower_works_on
显示关注者从事的项目。 Follows_users
显示哪些用户是其他用户的关注者。如果 id 是任何用户的关注者,我想 link 两个项目。即我想在用户工作的项目和追随者工作的项目之间创建一个 link 假设它们之间存在追随者关系。
例如:
用户 5812 在项目 1938026 上工作
关注者 6390 在项目 1529732 上工作
关注者 6390 关注用户 5812
因此项目1938026和1529732之间有一个link。
我是 mysql 的新手,所以我不确定如何构建这种关系。任何想法都会很棒。
结果应该是这样的
+---------+-------------+-------------+-------------+
| User_id | project_id1 | project_id2 | Follower_id |
+---------+-------------+-------------+-------------+
| 5812 | 1938026 | 1938026 | 6390 |
| 5812 | 1938026 | 1529732 | 6390 |
+---------+-------------+-------------+-------------+
SELECT project_id, repo_id
FROM User_Works_on AS u
JOIN Follows_user AS fu ON u.user_id = fu.user_id
JOIN Follower_Works_on AS f ON fu.follower_id = f.follower_id