简体   繁体   English

如何从此多对多表中选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM