首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当有数据+第一个表的所有剩余部分时,连接三个表+ GROUP_CONCAT

当有数据+第一个表的所有剩余部分时,连接三个表+ GROUP_CONCAT
EN

Stack Overflow用户
提问于 2020-10-23 05:56:56
回答 1查看 25关注 0票数 1

这可能很难。三张表

我想检索一个星舰数据+船员(组连接)+没有团队的其他星舰记录的列表。

这段代码每行返回一个团队成员的星际飞船...

代码语言:javascript
复制
SELECT 
ss.starship_id, ss.starship_name, ss.starship_quota, ss.quota_insert_date as lastupd,
u.nome, u.cognome
FROM starship as ss
    LEFT JOIN user_props as up
    ON ss.starship_id=up.starship_id
    LEFT JOIN users as u
    ON u.id_user=up.id_user

以下是示例数据:

代码语言:javascript
复制
id  name        quota   name            surname
------------------------------------------------------
23  HAS CREW    7923    Luke            Skywalker
23  HAS CREW    7923    PAdme            Amidala
------------------------------------------------------
24  UnALTRA       0     Bilbo           Baggins
24  UnALTRA       0     Frodo           Baggins
------------------------------------------------------
22  NO CREW     3552    NULL             NULL


column "lastupd" have been omitted

我想要的只是一个包含连接成员的“团队”记录,或者当没有团队在星际飞船上时为空。请参见以下示例表:

代码语言:javascript
复制
id  name        quota   TEAM
------------------------------------------------------
23  HAS CREW    7923    Luke Skywalker, Padme Amidala
------------------------------------------------------
24  UnALTRA       0         BilBo Baggins, Frodo Baggins
------------------------------------------------------
22  NO CREW     3552    NULL
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 06:00:32

为此,我将使用相关子查询:

代码语言:javascript
复制
select s.*,
    (
        select group_concat(u.nome, ' ', u.cognome)
        from user_props up
        inner join users u on u.id_user = up.id_user
        where up.starship_id = s.starship_id
    ) team
from starship s
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64491074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档