Всем привет! Для упрощения, взял абстрактную задачу, аналогичную существующей.
1. Есть таблица с заказами, в которой каждый заказ привязан к менеджеру
2. Вторая таблица - содержит записи ID-заказа и ID-менеджера, которые должны игнорироваться.
Нужно: Выбрать из талицы заказов те записи, которые есть у определенного менеджера, но которых нет в таблице с игнорируемыми заказами у этого же менеджера.
Пример закинул в песочницу ( url с хешем "режется" на форуме, посему ссылка TinyURL), где есть два менеджера и для первого (с ID = 1), есть два заказа, которые не должны учитываться при выборке.
На данный момент, есть запрос, который исправно работает, но хотелось бы оптимизировать:
CODE ( SQL):
скопировать код в буфер обмена
SELECT * FROM `orders` WHERE `ord_id` NOT IN ( SELECT `o_id` FROM `ignore_orders` WHERE `m_id` = ? ) AND `manager_id` = ?
Где в плейсхолдер (?) подставляется ID менеджера.
Толи я не выспался, толи что-то у меня сегодня с руками, но через JOIN переделать запрос не получается. Буду признателен, если подтолкнете в нужном направлении.(Отредактировано автором: 21 Мая, 2014 - 17:25:01)
|