У меня такой запрос:
SELECT product.id,
GROUP_CONCAT(image.id) AS images_id,
GROUP_CONCAT(image.title) AS images_title,
GROUP_CONCAT(facet.id) AS facets_id
...
GROUP BY product.id
И запрос работает, но не так, как ожидалось, потому что, если у меня есть продукт с 5 гранями и 1 изображением (предположим, изображение с id = 7), я получаю что-то вроде этого в "images_id":
"7,7,7,7,7"
Если у меня есть 2 изображения (7 и 3), я получаю что-то вроде:
"7,7,7,7,7,3,3,3,3,3"
и в гранях я получаю что-то вроде:
"8,7,6,5,4,8,7,6,5,4"
Я думаю, что MySQL объединяет строки разностей, возвращаемых запросом, и затем объединяет все.
Мой ожидаемый результат (для последнего примера):
images_id = "7,3"
facets_id = "8,7,6,5,4"
Я могу получить это, используя DISTINCT в GROUP_CONCAT, но тогда у меня есть другая проблема:
Если у меня есть два изображения с одинаковым названием, одно из них пропущено, а затем я получаю что-то вроде:
images_id = "7,3,5"
images_title = "Title7and3, Title5"
Так что мне не хватает отношения между images_id и images_title.
Кто-нибудь знает, возможно ли сделать этот запрос в MySQL?
Может быть, я все усложняю без каких-либо реальных выгод.
Я пытаюсь выполнить только один запрос из-за производительности, но теперь я не уверен, что еще быстрее выполнить два запроса (один для выбора фасетов, а другой для изображений, например).
Пожалуйста, объясните, что, по вашему мнению, является лучшим решением для этого и почему.
Спасибо!