逗号将字符串与FK引用的字符串分开

时间:2013-10-02 17:59:26

标签: sql sqlite

我有三张桌子:

1)姓名

IDname | Name
-------------
1      | Volk
2      | Molk
3      | Yolk

2)公司

IDcompany | Company
------------------
1         | Lucellous
2         | Monstrous

3)name_company,与名称(表1)和两个外键具有多对一关系

IDname_company | IDname | IDcompany
1              | 1      | 1
2              | 2      | 1
3              | 2      | 2

我需要一个能给我这个的查询:

IDresult | Name | Company
--------------------------------------
1        | Volk | Lucellous
2        | Molk | Lucellous, Monstrous
3        | Yolk |

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

2 个答案:

答案 0 :(得分:0)

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

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

您需要替换自己的查询。

答案 1 :(得分: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