我需要为csv-export编写一个SQL-Query。我有一个表“stores”,“items_stores”和因此“items”。存储HABTM项目。现在我想要一个包含项目列的结果。
像这样:
| Name | Lat | Lng | Items |
| Petes shop | 123 | 123 | Snacks, Pizza |
| Mama Pasta | 123 | 123 | Pasta, Pizza |
你希望得到这个想法。由于我很长时间没有使用原始SQL,我不知道如何做到这一点。该死的ORM。我想到了像左连接然后连续左右的东西。目前还没有任何线索,真的。
为简单起见,我们假设表中包含以下字段:
Stores: *id, name, lat, lng
ItemsStores: store_id, item_id
Items: *id, name
数据库是MySQL 5.x。
答案 0 :(得分:1)
假设您使用Sql Server 2005+,我建议您使用以下查询来获取结果表:
select Name, Lat, Lng, stuff((select ', ' + i.name from item_store ist
join item i on ist.itemid = i.id where ist.storeid = s.id for xml path('')), 1,2,'') [Items] from store s
更新。
我不知道如何在MySql中这样做。但我在SO上找到了this similar question。
我最好的猜测是:
select Name, Lat, Lng, gc
from store s
join
(
select storeid, GROUP_CONCAT(name order by name) gc
from item_store ist
join item i on ist.itemid = i.id
where s.id = ist.storeid
group by storeid
) t on t.storeid = s.id