Итак, у меня есть 4 таблицы:
автомобили:
+----+-------------+------------------------+
| id | title | description |
+----+-------------+------------------------+
| 1 | Lorem ipsum | amet coscutor lorem et |
+----+-------------+------------------------+
prducers:
+----+-----------------+-----------------+----------+
| id | name | website | location |
+----+-----------------+-----------------+----------+
| 1 | Porsche Zentrum | www.example.com | {json} |
+----+-----------------+-----------------+----------+
vehicle_images:
+------------+----------+
| vehicle_id | image_id |
+------------+----------+
| 1 | 1 |
+------------+----------+
изображения:
+----+-------+-----+----------------------------------+
| id | title | alt | url |
+----+-------+-----+----------------------------------+
| 1 | Foo | Bar | https://example.com/imgs/img.jpg |
+----+-------+-----+----------------------------------+
vehicles
имеет отношение многие ко многим с images
. В результате мне нужен список всех транспортных средств, сведения о производителе для каждого транспортного средства и все изображения для каждого транспортного средства.
Все, что я сейчас получаю, это список всех автомобилей с соответствующими дилерами, но каждый автомобиль существует так же часто, как и изображения:
+----+-------+---------------+---------+-----------+-----------+
| id | title | description | dealer | img_title | img_url |
+----+-------+---------------+---------+-----------+-----------+
| 1 | Car 1 | Description 1 | Porsche | img 1 | img-url-1 |
| 1 | Car 1 | Description 1 | Audi | img 2 | img-url-2 |
| 2 | Car 2 | Description 2 | Audi | img 3 | img-url-3 |
| 2 | Car 2 | Description 2 | VW | img 4 | img-url-4 |
+----+-------+---------------+---------+-----------+-----------+
И, наконец, мой запрос:
SELECT
v.id, v.title, v.description,
p.name AS dealer,
i.title AS img_title, i.url AS img_url
FROM vehicles v
LEFT JOIN producers p on p.id = v.producer_id
LEFT JOIN vehicle_images vi on vi.vehicle_id = v.id
LEFT JOIN images i ON vi.image_id = i.id;
Я не могу использовать GROUP BY id
из-за следующего сообщения об ошибке:
Код ошибки: 1055. Выражение № 9 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец «projektarbeit.i.title», который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by
Конечно, я мог бы деактивировать only_full_group_by
в своих настройках MySQL, но я думаю, что это не лучшее решение.