2010-09-19 4 views
1

У меня есть таблицы item и store (это система управления магазином). Таблица item имеет столбец store_id и другой столбец status. item.status может быть «продан» или «непродан».MySQL - условный SELECT

мне нужна помощь в написании запроса, который будет делать эти вещи:

  • выбрать все элементы всех магазинов
  • если магазин имеет только один пункт и что пункт «продается», удалите этот элемент из результирующий набор

Заранее благодарен!

ответ

3

Вы можете создать фильтр-подзапрос, который ищет магазины с более чем одним элементом или один непроданный элемент. Затем вы можете присоединиться к подзапросу на исходных таблицах, например:

select * 
from (
     select s2.store_id 
     from store s2 
     join items i2 
     on  s2.store_id = i2.store_id 
     group by 
       s2.store_id 
     having 
       count(*) > 1 -- More than one item 
       or max(i2.status) = 'unsold' -- One item but unsold 
     ) filter 
join store s 
on  filter.store_id = s.store_id 
join items i 
on  s.store_id = i.store_id 

 Смежные вопросы

  • Нет связанных вопросов^_^