我有三张桌子:
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。
答案 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