MySQL JOIN包装成一个数组

Mih*_*rga 8 mysql

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

优惠:

| id | offer      | info  
| 1  | City break | information
Run Code Online (Sandbox Code Playgroud)

图片:

| id | id_offer | picture_name  | title  
| 1  | 1        | bucharest.jpg | Bucharest  
| 2  | 1        | london.jpg    | London
Run Code Online (Sandbox Code Playgroud)

sql查询:

SELECT offers.* as t1, pictures.* as t2
FROM offers  
JOIN t2 ON t1.id=t2.id_offer  
WHERE t1.id = '1'
Run Code Online (Sandbox Code Playgroud)

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

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

Qua*_*noi 22

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
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记`AS`部分,以便你知道变量返回的内容:`GROUP_CONCAT(picture_name ORDER BY p.id)AS pictureNames`那么你可以像这样使用它:`results.pictureNames`:D (3认同)

Nak*_*lda 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
Run Code Online (Sandbox Code Playgroud)