• Как освоить Mac OS разработчику?

    @Erling
    Найдите книгу Пол Макфедрис - Переходим на Mac (2013)
    Ответ написан
    Комментировать
  • Как получить заказы с определенным товаром через SQL?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вы бы хотя бы структуру таблиц писали. В режиме телепата могу предположить что
    order_positions имеет поля order_id, good_id и хочется верить что это уникальный ключ.
    Тогда вот так:

    Как получить список заказов, где есть товар 2 и больше нет никаких других товаров?

    select order_id from order_positions
    group by order_id
    having count(good_id) = 1 and good_id = 2

    * это говнокодный запрос с неявным поведением, но в mysql он как правило будет работать.
    см https://dev.mysql.com/doc/refman/5.0/en/sql-mode.h...

    Как получить список заказов, где есть товар 2 и есть другой товар 3?

    select order_id from order_positions where 
    good_id IN (2,3)
    group by order_id
    having count(good_id) = 2


    Как получить список заказов, где есть товар 2 и есть другой товар 3 или 4?

    select order_id from order_positions where 
    good_id IN (2,3)
    group by order_id
    having count(good_id) = 2
    union
    select order_id from order_positions where 
    good_id IN (2,4)
    group by order_id
    having count(good_id) = 2


    UPD
    как выбрать заказы с good_id = 2, но чтобы не было good_id = 3 и 4?

    В самом общем виде можно писать
    select * from order 
    where 
    order_id IN (select order_id from order_position WHERE good_id = 2)
    AND
    order_id NOT IN (select order_id from order_position WHERE good_id in (3,4))

    Этот запрос не будет использовать индексы, но зато наиболее читаем)
    Ответ написан
    6 комментариев