tags:

views:

22

answers:

2

I have some minor problem with a SQL query.

I have to select data from multiple tables like:

Table structure
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

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 a pictures table.
This will return an array with 2 objects.
It is possible to return 1 object in the array with both pictures in it?

A: 

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
Naktibalda
+3  A: 

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
Quassnoi
thank you :) saved me :)
Mihai Iorga