SQL查询需要将多对一值组合成单个结果

时间:2014-06-15 00:53:32

标签: mysql sql database one-to-many many-to-one

我有两个名为Item and Property的数据库表:

Item
--------
item_id
title

Property
--------
property_id
item_id
property_value

每个项目都可以与任意数量的属性条目相关联。

是否有SQL / MySql查询可以返回Item数据及其相应属性数据在同一行中? (即我希望查询返回这些表中的所有数据,格式化为返回结果的每一行都包含特定项的所有Item和相关属性数据)

这可能吗?

2 个答案:

答案 0 :(得分:1)

如果您不介意将结果放在一列中,您可以执行以下操作:

SELECT i.item_id,
       group_concat(p.property_id, ':', p.property_value separator ';') as properties
FROM Item i INNER JOIN
     Property p
     ON i.item_id = p.item_id
GROUP BY i.item_id;

答案 1 :(得分:0)

寻找这个?:

SELECT *
FROM Item i INNER JOIN Property p
ON i.item_id = p.item_id

这将从两个表中投射item_id。如果要限制列,请从每个表中单独列出。