MySQL - условный SELECT - PullRequest
       7

MySQL - условный SELECT

1 голос
/ 19 сентября 2010

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

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

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

Заранее спасибо!

1 Ответ

3 голосов
/ 19 сентября 2010

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...