[英]How to select from this many-to-many tables
Database: mySQL 数据库:mySQL
What I am looking for is: A way to select a list of users that has status X with User X. Let's say my name is James and I want to get my friends list. 我正在寻找的是:一种选择状态为X的用户X的用户列表的方法。假设我的名字是James,我想获取我的朋友列表。 Is this possible? 这可能吗?
Tabel User: Tabel用户:
-- ID - ID
-- first_name - 名字
-- last_name - 姓
... ...
Tabel User_Status: Tabel User_Status:
-- User_ID1 -User_ID1
-- User_ID2 -User_ID2
-- Status - 状态
The result I want should look something like this: Let's say my user ID = 0. 我想要的结果应如下所示:假设我的用户ID = 0。
User_ID1-----User_ID2-----Status User_ID1 ----- User_ID2 -----状态
------0---------------1-----------friends ------ 0 --------------- 1 -----------朋友
------0---------------2-----------friends ------ 0 --------------- 2 -----------朋友
------0---------------3-----------friends ------ 0 --------------- 3 -----------朋友
------0---------------4-----------friends ------ 0 --------------- 4 -----------朋友
------0---------------5-----------friends ------ 0 --------------- 5 -----------朋友
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.