2017-03-22 7 views
0

データベースから選択する方法:MySQLのこの多対多のテーブル

私は何を探していますが次のとおりです。のは、私の名前はジェームズあるとしましょうユーザーXでステータスXを持っているユーザーのリストを選択する方法私は友達のリストを取得したい。これは可能ですか?

Tabelユーザー:
- ID
- FIRST_NAME
- LAST_NAME
...

Tabel USER_STATUS:
- User_ID1
- User_ID2
- ステータス

私が望む結果は、私のユーザID = 0としましょう。

User_ID1 ----- User_ID2 -----ステータス
------ 0 ------------- --1 ----------- friends
------ 0 --------------- 2 ---------- -friends
------ 0 --------------- 3 ----------- friends
------ 0-- ------------- 4 ----------- friends
------ 0 --------------- 5 ----------- friends

答えて

1
mysql> select * from User; 
+----+------------+-----------+ 
| ID | first_name | last_name | 
+----+------------+-----------+ 
| 1 | Nikolai | Tesla  | 
| 2 | Albert  | Einstein | 
| 3 | Bertrand | Russell | 
| 4 | Carl  | Sagan  | 
+----+------------+-----------+ 
4 rows in set (0.00 sec) 

mysql> select * from User_Status;                 +----------+----------+---------------+ 
| User_ID1 | User_ID2 | Status  | 
+----------+----------+---------------+ 
|  1 |  2 | FRIENDS  | 
|  1 |  3 | FRIENDS  | 
|  2 |  1 | FRIENDS  | 
|  3 |  4 | ACQUAINTANCES | 
|  3 |  1 | FRIENDS  | 
+----------+----------+---------------+ 

mysql> SELECT u.* 
     FROM User u 
     JOIN User_Status us ON u.ID = us.User_ID1 
     WHERE us.Status = "FRIENDS" AND us.User_ID2 = 1; 
+----+------------+-----------+ 
| ID | first_name | last_name | 
+----+------------+-----------+ 
| 2 | Albert  | Einstein | 
| 3 | Bertrand | Russell | 
+----+------------+-----------+ 
2 rows in set (0.00 sec) 
+0

あなたはどのような種類のウィザードであるか分かりませんが、ありがとうございます! –

関連する問題