我对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个对象的数组。
可以在数组中返回一个包含两张图片的对象吗?
答案 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