Reputation: 39704
I have some minor problem with an SQL query. I have to select data from multiple tables like:
offers:
| id | offer | info
| 1 | City break | information
pictures:
| id | id_offer | picture_name | title
| 1 | 1 | bucharest.jpg | Bucharest
| 2 | 1 | london.jpg | London
sql query:
SELECT offers.* as t1, pictures.* as t2
FROM offers
JOIN t2 ON t1.id=t2.id_offer
WHERE t1.id = '1'
The code is much larger but I don't understand how to wrap results from t2 into an array. Because the length of the array returned is made by t2 which is the pictures table. This will return an array with 2 objects.
It is possible to return one object in the array with both pictures in it?
Upvotes: 13
Views: 37282
Reputation: 425341
MySQL
does not support array datatypes.
You can return a comma separated list of values instead:
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
Upvotes: 31
Reputation: 14100
Arrays doesn't exist in mysql. But you can use GROUP_CONCAT to return all images in comma separated list
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
Upvotes: 15