Скажем, у меня есть две таблицы. Один содержит список элементов, а один содержит фотографии предметов.MySQL, присоедините один элемент к нескольким элементам в одном запросе
Что-то вроде этого:
Элементы
+----+---------+
| id | name |
+----+---------+
| 1 | oranges |
| 2 | apples |
+----+---------+
Фотографии
+----+---------+
| id | item_id |
+----+---------+
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
+----+---------+
Мой вопрос заключается в следующем: возможно ли это в одном запросе, чтобы выбрать пункт 2
из Items
и соедините все строки в Pictures
стол, на котором item_id
ссылается на тот же идентификатор?
Я уверен, что я пробовал почти все, что мог придумать, но ничего не приходит на ум. Прошу прощения, если ответ на этот вопрос прост, но он просто ускользает от меня прямо сейчас.
EDIT
@Andomar, что работает, но это точно не дает мне результаты, которые я хотел. Я предполагаю, что я должен быть более ясным и спросить, можно ли получить результаты, которые напоминают что-то вроде этого (это массив PHP, но организация, что я после):
$results = array(
[0] => array(
'id' => 1,
'name' => 'oranges',
'images' => array(
[0] => ...,
),
),
[1] => array(
'id' => 2,
'name' => 'apples',
'images' => array(
[0] => ...,
[1] => ...,
),
),
);
Я отредактировал вопрос, но ваш запрос кажется действительно близким к тому, что я искал. На самом деле это не является частью исходного вопроса, но мне было интересно, есть ли способ сделать что-то внутри оператора GROUP_CONCAT, например this ((p.name + "." + P.extension) ", чтобы в итоге результат вроде 'img1.png, img2.png'? – bschaeffer
Для этого можно использовать 'CONCAT', например:' GROUP_CONCAT (CONCAT ('img', p.id, '.png') SEPARATOR ',') '. – Alec