Re[3]: Оптимизация запросов [новичок]
От: AndrewN Россия  
Дата: 06.12.14 20:01
Оценка: 2 (1)
Здравствуйте, koenjihyakkei, Вы писали:

K>Здравствуйте, BlackEric, Вы писали:


BE>>А написать

BE>>
BE>> Select * from table where
BE>>(product_id in category_1) and (product_id not in category_1)
BE>>


K>Спасибо, попробовал, но результат немного не тот что нужен:


K>http://sqlfiddle.com/#!2/5b105/7/0


K>
K>CREATE TABLE test
K>    (
K>      category_id int,
K>      product_id int
K>    );

K>INSERT INTO test
K>(category_id, product_id)
K>VALUES
K>(1, 10),
K>(1, 11),
K>(1, 12),
K>(1, 13),
K>(2, 12),
K>(2, 13),
K>(2, 14),
K>(2, 15),
K>(2, 16);


K>SELECT * FROM test WHERE (category_id IN (1,2)) AND (category_id NOT IN (2))
K>


K>Результат:

K>CATEGORY_ID PRODUCT_ID
K>1 10
K>1 11
K>1 12
K>1 13

K>а нужен такой

K>CATEGORY_ID PRODUCT_ID
K>1 10
K>1 11

K>То есть все продукты, входящие в обе категории должны исключаться.



Ну тогда вычтите результат второго запроса из первого и всё

SELECT product_id FROM test WHERE category_id IN(1)
MINUS
SELECT product_id FROM test WHERE category_id IN(2)
--------------------------------------------------------------
Правильно заданный вопрос содержит в себе половину ответа
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.