Я хотел бы иметь возможность получать строки из таблицы "статей" на основе двух "категорий", однако у меня возникли проблемы с моими объединениями.Вот как будут выглядеть мои таблицы:
`articles` (
`article_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`article_name` varchar(255) NOT NULL
PRIMARY KEY (`article_id`)
)
`article_categories` (
`article_id` smallint(5) unsigned NOT NULL,
`category_id` smallint(5) unsigned NOT NULL
UNIQUE KEY `article_category_id` (`article_id`,`category_id`),
KEY `article_id` (`article_id`),
KEY `category_id` (`category_id`)
)
Теперь я хотел бы получить все статьи, относящиеся к обеим категориям 3 и 5 (или неограниченное количество категорий).).Я думал, что мог бы сделать что-то вроде этого:
SELECT * FROM articles a INNER JOIN article_categories ac ON ac.article_id = a.article_id WHERE (ac.category_id = 3 AND ac.category_id = 5)
Просто чтобы прояснить, я не хочу статьи, которые находятся в ЛИБО 3 или 5, но ОБА 3 И 5.
Ядумая, что это одна из тех действительно простых вещей, которые я как-то упустил из-за усталости или чего-то подобного.
Либо это, либо мне буквально придется сделать еще одно объединение для каждой категории, которую я хочу включить, например:
SELECT a.* FROM articles a INNER JOIN article_categories ac ON ac.article_id = a.article_id INNER JOIN article_categories ac2 ON ac2.article_id = a.article_id WHERE (ac2.category_id = 3 AND ac.category_id = 5)
Но я уверен, что есть более простое решение, чем это.