我有四张table。
用户
| 电子邮件| email |
| - -----| ------------ |
| www.example.com |b@mail.com|
| www.example.com |a@mail.com|
团队介绍
| 标题|俱乐部| club |
| - -----|- -----| ------------ |
| u7|一个| 1 |
| U8|一个| 1 |
团队_用户
| 用户id| user_id |
| - -----| ------------ |
| 一个| 1 |
| 一个| 1 |
俱乐部
| 标题| title |
| - -----| ------------ |
| 曼彻斯特| manchester |
| 马德里| madrid |
我想写一个查询,它返回所有用户,只显示他们的电子邮件(他们有其他列)和与此用户相关的球队(如果可能的话,在数组中)和一个特定的俱乐部。我想每个用户一行。我要各队的所有资料。我想找回没有相关团队的用户。
这可能吗?
到目前为止,这是我的代码:
SELECT u.email, u.first_name, u.last_name, GROUP_CONCAT(team.title)
FROM user u
LEFT JOIN team_user
ON team_user.user_id = u.id
LEFT OUTER JOIN team
ON team.club_id = u.club_id and team_user.team_id = team.id
GROUP BY email, first_name, last_name
但这只返回以逗号分隔的方式显示的团队名称。我可以在数组或对象中取回其他字段和吗?
1条答案
按热度按时间dxxyhpgq1#
一个选项使用JSON ;我们可以为每个用户生成一个团队对象数组,如下所示:
请注意,这仍然需要您列出teams表中的所有列,因为MySQL没有提供将记录转换为json对象的本地函数(与其他数据库(如Postgres)不同)。
我不明白表
club
是如何进入画面的,因为它似乎与其他表没有关系。