Вывод нескольких строк в один массив

1. Вусал (12.01.2016 / 19:10)
А возможно ли как то сделать запрос чтоб на выходе был так
array (
'id' => 1,
'self_id' => 1 ,
'user_id' => 1 ,
'text' => 'text post',
'attach_audio' => array (
0 => array (
'audio_id' => 10 ,
'title' => 'track title'
)
)
)

скажем что то в этом роде
SELECT post.*, (SELECT audio.* FROM audio WHERE audio IN (post.attach_audio)) as attach_audio
FROM post

?????????

2. Вантуз-мен (12.01.2016 / 19:41)
Твой запрос вернет данные к примеру в виде одномерного массива
тебе нужно сделать 2 запроса которые будут получать отдельно посты и отдельно аудио
и потом соединять

3. Вусал (12.01.2016 / 19:55)
2. Vantuz, как сделать это с помощью двух запросов я знаю, но вот думал, может есть запрос, который может это сделать с помощью одного.. ведь в списке вывода записей будет 20 записей и к каждому записи делать запрос к аудио будет суммарное значение запросов.. по гуглил и для mysql не нашел решения, но postgreSQL возможно такое((

4. Вантуз-мен (12.01.2016 / 19:59)
если бы была связь 1 к 1 можно было бы сделать через left join, но с один ко многим так не получится
поэтому обычно делают вот так
select * from posts;
select * from audio where post_id IN(список id из выборки выше);

Добавлено через 01:17 сек.
с помощью ORM и жадной загрузкой было бы проще писать, а так тот же самый запрос

5. Вусал (12.01.2016 / 20:55)
ясно.. спасибо))

URL: https://visavi.net/topics/42777