MySQL JOIN包装成一个数组

时间:2010-06-28 12:27:59

标签: mysql

我对SQL查询有一些小问题。我必须从多个表中选择数据,如:

优惠

| id | offer      | info  
| 1  | City break | information

图片

| id | id_offer | picture_name  | title  
| 1  | 1        | bucharest.jpg | Bucharest  
| 2  | 1        | london.jpg    | London

sql查询

SELECT offers.* as t1, pictures.* as t2
FROM offers  
JOIN t2 ON t1.id=t2.id_offer  
WHERE t1.id = '1'

代码要大得多,但我不明白如何将t2的结果包装到数组中。因为返回的数组的长度是由图片表格t2做出的。这将返回一个包含2个对象的数组。

可以在数组中返回一个包含两张图片的对象吗?

2 个答案:

答案 0 :(得分:19)

MySQL不支持数组数据类型。

您可以返回以逗号分隔的值列表:

SELECT  o.*, GROUP_CONCAT(picture_name ORDER BY p.id)
FROM    offers o
JOIN    pictures p
ON      p.id_offer = o.id
GROUP BY
        o.id

答案 1 :(得分:8)

mysql中不存在数组。 但您可以使用GROUP_CONCAT以逗号分隔列表

返回所有图像
SELECT offers.*, GROUP_CONCAT(t2.picture_name) AS pictures
FROM offers AS t1
JOIN pictures AS t2 ON t1.id=t2.id_offer
WHERE t1.id = '1' 
GROUP BY t1.id