Запрос на вывод результатов на основе отношения внешнего ключа - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующие 2 таблицы в MySQL: products (id (int), title (varchar), description (varchar), add_date (datetime)), images (id (int), product_id (int), image_file (varchar), main_image (двоичный), date_add (datetime)). Столбец main_image имеет значение 1 только для одного из изображений продукта, остальные равны 0. Из-за ошибки в коде некоторые изображения добавлены в таблицу без main_image = 1 Мне нужно это исправить. Как выбрать все продукты, у которых нет одного main_image = 1

1 Ответ

1 голос
/ 05 апреля 2020

Вы можете взять MAX из всех значений main_image для каждого продукта, выбрав только те продукты, которые имеют MAX, равный 0 (т. Е. Нет значения, равного 1):

SELECT product_id
FROM images
GROUP BY product_id
HAVING MAX(main_image) = 0

При необходимости вы можете использовать это как подзапрос и JOIN к таблице продуктов (или использовать в выражении IN), чтобы получить подробную информацию об этих продуктах, например,

SELECT *
FROM products 
WHERE id IN (SELECT product_id
             FROM images
             GROUP BY product_id
             HAVING MAX(main_image) = 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...