2

我有三张桌子:

1) 名称

身份证号 | 姓名
-------------
1 | 大众
2 | 莫克
3 | 蛋黄

2) 公司

ID公司 | 公司
------------------
1 | 琉璃苣
2 | 滔天

3)name_company,与name(表1)和两个外键是多对一的关系

IDname_company | 身份证号 | ID公司
1 | 1 | 1
2 | 2 | 1
3 | 2 | 2

我需要一个查询,它会给我这个:

结果 | 姓名 | 公司
--------------------------------------
1 | 大众 | 琉璃苣
2 | 莫克 | 光彩夺目,怪异
3 | 蛋黄 |

我该怎么做?我使用 SQLite,也许稍后我会切换到 Firebird。

4

2 回答 2

0

要从多个字符串中获取逗号分隔的字符串,请使用group_concat函数。字符串来自子查询中返回的所有记录:

SELECT IDname AS IDresult,
       Name,
       (SELECT group_concat(Company)
        FROM company
        WHERE IDcompany IN (SELECT IDcompany
                            FROM name_company
                            WHERE IDname = name.IDname))
FROM name

或来自用 定义的组中的所有记录GROUP BY

SELECT name.IDname AS IDresult,
       name.Name,
       group_concat(company.Company)
FROM name
LEFT JOIN name_company ON name.IDname            = name_company.IDname
LEFT JOIN company      ON name_company.IDcompany = company.IDcompany
GROUP BY name.IDname
于 2013-10-02T18:31:18.383 回答
0

SQLite 支持 group_concat() 字符串聚合函数,请参阅http://www.sqlite.org/lang_aggfunc.html以用于以下查询:

select id, group_concat(<string_column>)
from <table>
group by id;

您需要替换您自己的查询。

于 2013-10-02T18:08:07.953 回答