Сценария:Как отобразить совпадающие записи вернулись из объединения вместо отдельных строк
У меня есть две таблицы, структурированная следующим образом.
Таблица 1: изображения
+--------+------------+
| img_id | img_name |
+--------+------------+
| 1 | image1.jpg |
| 2 | image2.jpg |
| 3 | image3.jpg |
+--------+------------+
Таблица 2: image_tags
+---------+--------+----------+--------+--------+
| cord_id | img_id | tag_text | xcord | ycord |
+---------+--------+----------+--------+--------+
| 1 | 1 | Tag1 | 28.1 | 30.4 |
| 2 | 1 | Test Tag | 23.4 | 4.5 |
+---------+--------+----------+--------+--------+
Теперь я хочу, чтобы изображения вместе со своими тегами, которые довольно просто с помощью левой присоединиться
SELECT img_id, img_name,tag_text, xcord,ycord FROM images t1 LEFT JOIN image_tags t2 ON t1.id=t2.id
Это результаты запроса в следующих наборов данных
+--------+------------+----------+--------+--------+
| img_id | img_name | tag_text | xcord | ycord |
+--------+------------+----------+--------+--------+
| 1 | image1.jpg | Tag1 | 28.1 | 30.4 |
| 1 | image1.jpg | Test Tag | 23.4 | 4.5 |
| 2 | image2.jpg | NULL | NULL | NULL |
| 3 | image3.jpg | NULL | NULL | NULL |
+--------+------------+----------+--------+--------+
Проблема:
Теперь с помощью PHP (или MYSQL, если это возможно), я хочу, чтобы результаты от image_tags таблиц, которые будут сцеплены с каждой строкой в виде массива. Итак, когда я прокручиваю записи в Angular, у меня есть изображения вместе с их тегами в виде массива вместо двух отдельных строк, так как вы можете видеть первые две строки в наборе результатов.
Желаемый результат пример,
{
cord_id : 1,
img_id : 1,
tags : [{
tag_text : "Tag1",
xcord : 28.1,
ycord : 30.4,
},{
tag_text : "Test Tag",
xcord : 23.4,
ycord : 4.5,
}
]
}
Я изучал о карту() функция в PHP, но не смог этого добиться.
Примечание: Я использую CodeIgniter, так что если какая-то соответствующая поддержка для достижения этой цели, что также будет работать для меня.
Любая помощь будет высоко оценена. Спасибо
ли вы попробовать с [GROUP_CONCAT] (http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat)? –
Да, я сделал, но не смог достигнуть упомянутого желаемого результата –
@YousalfHassan: Как насчет ожидания столбцов xcord, ycord? Можете ли вы записать свое ожидание в один стол, как вы это делали с другими? С помощью PHP легко создать JSON в качестве желаемого результата из вашего результата запроса. –