Mysql多对一或一对多

时间:2015-01-23 21:42:35

标签: mysql one-to-many many-to-one

我有点困惑,需要一些帮助。我有3张桌子。

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 |
+---------+-------------+

User_works_on显示用户使用的项目。 Follower_works_on显示了关注者所处理的项目。 Follows_users显示哪些用户是其他用户的关注者。如果id是任何用户的关注者,我想链接两个项目。即我想在用户使用的项目与关注者所处的项目之间创建一个链接,假设他们之间存在关注者关系。

例如:

用户5812适用于项目1938026 从动件6390适用于项目1529732
跟随者6390跟随用户5812
因此项目1938026和1529732之间存在联系。

我是mysql的新手,所以我不确定如何构建这种关系。任何想法都会很棒。

结果看起来像这样

+---------+-------------+-------------+-------------+
| User_id | project_id1 | project_id2 | Follower_id |
+---------+-------------+-------------+-------------+
|    5812 |     1938026 |     1938026 |        6390 |
|    5812 |     1938026 |     1529732 |        6390 |
+---------+-------------+-------------+-------------+

1 个答案:

答案 0 :(得分:2)

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

DEMO