@SantyagoNN

MySQL уникальные значения по одному полю, как?

Допустим есть такая таблица c изображениями товаров

id           product_id          image          position
1            10                 1.jpg             0    
2            10                 2.jpg             1
3            20                 3.jpg             112 
4            20                 4.jpg             18
5            30                 5.jpg             6 
6            10                 6.jpg             4
7            20                 7.jpg             11


Мне нужны два запроса

Запрос 1.
Должен вернуть строки, в которых:
  • Во всех строках product_id должен встречаться только один раз
  • position должен быть минимальным у каждого product_id


В результате этот запрос вернет строки с id 1,5,7
Другими словами - это основные изображения, они присутствуют у каждого товара, их позиция всегда минимальна (но не обязательна что она равна нулю)

Запрос 2.
Должен вернуть строки:
  • Которых нет в результате первого запроса


В результате этот запрос вернет строки с id 2,3,4,6
Другими словами - это дополнительные изображения, их у товара может и не быть, а может быть несколько. Если они есть у товара, то их позиции (position) выше чем у основного изображения.
  • Вопрос задан
  • 1117 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ну если по простому, то
select * from images where position in (select min(position) from tests group by product_id);
select * from images where position not in (select min(position) from tests group by product_id);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы