我有三个表:
1)姓名
ID名称|名称
-------------
1 |沃尔克
2 |莫尔克
3 |蛋黄
2)公司
IDcompany |公司
------------------
1 |夜光的
2 |滔天
3)name_company,与名称(表1)和两个外键具有多对一关系
IDname_company | ID名称| ID公司
1 | 1 | 1个
2 | 2 | 1个
3 | 2 | 2
我需要一个查询,它会给我这个:
结果姓名|公司
--------------------------------------
1 |沃尔克|夜光的
2 |民间夜光的
3 |蛋黄|
我该怎么做?我使用SQLite,也许以后再切换到Firebird。
最佳答案
要从多个字符串中获取逗号分隔的字符串,请使用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