У меня следующий код
SELECT DISTINCT t.`id_task` FROM crm_task t LEFT JOIN crm_task_tagtogroup asso USING (`id_task`) WHERE asso.id_tag IN(1,2,5,6)
Моя проблема в том, что он включает на OR
основе, а не AND
основе (Excldude работает нормально). Ищите эффективный способ изменить id_task IN ()
на AND
.
Поэтому я получаю все записи, которым присвоены теги 1,2,5 и 6
Структура базы данных:
CREATE TABLE `crm_task_tagtogroup` (
`id_task` INT UNSIGNED ,
`id_tag` INT UNSIGNED ,
UNIQUE KEY (`id_task`, `id_tag`)
) CHARACTER SET utf8 COLLATE utf8_general_ci ;
CREATE TABLE `crm_task` (
`id_task` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR(30),
`description` TEXT ,
`priority` INT UNSIGNED ,
`client_id` INT UNSIGNED ,
`value_netto` INT UNSIGNED
) CHARACTER SET utf8 COLLATE utf8_general_ci ;
Есть идеи? Хотелось бы сохранить простоту и не включать проверку foreach в скрипте PHP