Здравствуйте, 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)