Mysql 在SQL中连接三个表

Mysql 在SQL中连接三个表,mysql,sql,Mysql,Sql,好吧,这似乎太容易了,但我们都没有得到想要的结果,结果应该是这样的: User uid name Roles uid role_id Subscriptions uid subscriptions_id user roles subscriptions 1 2,3 1,4,5 2 2,4 4,5,6 .... user roles subscriptions 1 2,3 5 2 2,4 6 .... SELECT User.name,

好吧,这似乎太容易了,但我们都没有得到想要的结果,结果应该是这样的:

User
uid name

Roles
uid role_id

Subscriptions
uid subscriptions_id
user roles subscriptions
1    2,3   1,4,5
2    2,4   4,5,6
....
user roles subscriptions
1    2,3   5
2    2,4   6
....
SELECT User.name, 
       GROUP_CONCAT(Roles.role_id), 
       GROUP_CONCAT(Subscriptions.subscriptions_id) 
FROM   User 
       LEFT JOIN Roles ON User.uid = Roles.uid 
       LEFT JOIN Subscriptions ON Users.uid = Subscriptions.uid
相反,结果如下所示:

User
uid name

Roles
uid role_id

Subscriptions
uid subscriptions_id
user roles subscriptions
1    2,3   1,4,5
2    2,4   4,5,6
....
user roles subscriptions
1    2,3   5
2    2,4   6
....
SELECT User.name, 
       GROUP_CONCAT(Roles.role_id), 
       GROUP_CONCAT(Subscriptions.subscriptions_id) 
FROM   User 
       LEFT JOIN Roles ON User.uid = Roles.uid 
       LEFT JOIN Subscriptions ON Users.uid = Subscriptions.uid
select命令如下所示:

User
uid name

Roles
uid role_id

Subscriptions
uid subscriptions_id
user roles subscriptions
1    2,3   1,4,5
2    2,4   4,5,6
....
user roles subscriptions
1    2,3   5
2    2,4   6
....
SELECT User.name, 
       GROUP_CONCAT(Roles.role_id), 
       GROUP_CONCAT(Subscriptions.subscriptions_id) 
FROM   User 
       LEFT JOIN Roles ON User.uid = Roles.uid 
       LEFT JOIN Subscriptions ON Users.uid = Subscriptions.uid
顺便说一句,小组讨论不是问题。如果我不考虑这一点,我仍然会得到这样的结果:

User
uid name

Roles
uid role_id

Subscriptions
uid subscriptions_id
user roles subscriptions
1    2,3   1,4,5
2    2,4   4,5,6
....
user roles subscriptions
1    2,3   5
2    2,4   6
....
SELECT User.name, 
       GROUP_CONCAT(Roles.role_id), 
       GROUP_CONCAT(Subscriptions.subscriptions_id) 
FROM   User 
       LEFT JOIN Roles ON User.uid = Roles.uid 
       LEFT JOIN Subscriptions ON Users.uid = Subscriptions.uid
而不是

user roles subscriptions
1    2     5
1    3     5
2    2     6
我试过这个:

user roles subscriptions
1    2     1
1    3     4
1    -     5
我得到了这个:

SELECT User.uid, 
       GROUP_CONCAT(DISTINCT Roles.role_id), 
       GROUP_CONCAT(DISTINCT Subscriptions.subscriptions_id)
FROM   User 
       LEFT JOIN Roles ON User.uid = Roles.uid 
       LEFT JOIN Subscriptions ON User.uid = Subscriptions.uid
GROUP BY User.uid
这是你的结果吗

user    roles    subscriptions
1       2,3      1,5,4
2       2,4      4,5,6