Предположим, у меня есть таблица "тегов" с двумя столбцами: tagid и contentid . Каждая строка представляет тег, назначенный для части содержимого. Я хочу запрос, который даст мне содержание каждой части контента, которая помечена тегами 334, 338 и 342.
Самый простой способ сделать это ( псевдокод ):
select contentid from tags where tagid = 334 and contentid in (
select contentid from tags where tagid = 338 and contentid in (
select contentid from tags where tagid = 342
)
)
Однако моя интуиция говорит мне, что есть лучший, более быстрый и более расширяемый способ сделать это. Например, что если мне нужно найти пересечение 12 тегов? Это может быстро стать ужасным. Есть идеи?
РЕДАКТИРОВАТЬ : Оказывается, это также описано в этом отличном сообщении в блоге .