Ясно, буду знать как работает ANDибо поле не может быть одновременно равно 2, 4 и 5
что-то у вас с логикой
Значит нужно смириться с тем, что программирование — это не твоё.Спасибо. Он не подойдет судя по второму посту.
Программирование или знания языка программирования ? Это разные вещи....Значит нужно смириться с тем, что программирование — это не твоё.
Спасибо за мысль! Но, к сожалению, не то....Просто проверь число возвращённых строк и число id-шников, оно должно совпадать.
CREATE TABLE IF NOT EXISTS `product_category` (
`product_id` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`position` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `product_category` (`product_id`, `category_id`, `position`) VALUES
(1, 1, 0),
(2, 1, 0),
(3, 1, 0),
(4, 2, 0),
(5, 2, 0),
(1, 2, 0),
(4, 2, 0);
SELECT `product_id`, COUNT(*)
FROM `product_category`
WHERE `category_id` IN(1, 2)
GROUP BY `product_id`
HAVING COUNT(*) = 2
Просто проверь число возвращённых строк и число id-шников, оно должно совпадать.
Один продукт может находится и в 20-ти категориях, главное что бы при запросе, данный продукт находился в категории и 1 и 2. И mysql отдавал только те продукты, которые соответствуют запросу. P.S. почему не могу сделать на уровне php, т.к. LIMIT еще предусмотрен......!а если продукт находится в категориях 1, 2 и 3 он уже не подходит?
Большое спасибо!Автор не сумел задать вопрос, а тема аналогичная уже была.
Дано: таблица-связка, задающая отношения многие-ко-многим. Уникальный ключ (a_id, b_id)
Надо найти те a_id, у которых есть все указанные b_id.
Никакого AND конечно не нужно, можно через OR или IN() что одно и то же.
http://sqlfiddle.com/#!2/2f430/3Код:SELECT `product_id`, COUNT(*) FROM `product_category` WHERE `category_id` IN(1, 2) GROUP BY `product_id` HAVING COUNT(*) = 2
Вурдалак фактически уже подсказал это![]()