2015-01-23 3 views
0

Я немного смущен и нуждаюсь в некоторой помощи в этом. У меня 3 таблицы.Mysql many to one OR one to many

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 показывает, какие пользователи являются подписчиками других. Я хочу связать два проекта, если идентификатор является последователем любого пользователя. i.e я хочу создать связь между проектом, над которым работает пользователь, и проектом, над которым работает последователь, полагая, что между ними существует последовательная связь.

Например:

пользователя 5812 Работы по проекту 1938026
Проходные 6390 Работы по проекту 1529732
Последователь 6390 следует User 5812
Поэтому существует связь между проектом 1938026 и 1529732.

Я новичок в mysql, поэтому я не уверен, как создать такие отношения. Любые идеи были бы замечательными.

Результат будет выглядеть следующим образом

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

Форматирование намеком: Блоки кода или отформатированные таблицы могут быть выложены красиво с фиксированной шириной шрифта, выделив их и 'CtL- k' или с помощью кнопки '{}' на панели инструментов редактора. –

+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

+0

большое спасибо. это именно то, что я хотел сделать. – user3112486