使用habtm关系获得格式良好的sql-result

时间:2010-09-21 14:00:39

标签: sql has-and-belongs-to-many

我需要为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。

1 个答案:

答案 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