Как получить несколько тегов из базы данных? - PullRequest
1 голос
/ 03 июля 2011

Хорошо, я провел некоторое исследование и обнаружил, что хорошая нормализованная таблица статей и тегов должна выглядеть следующим образом:

articles table:  article_id | article_text

tags table: tag_id | tag_text

article-tag table: article_id | tag_id

Теперь я пытаюсь сделать следующее: допустим, я ищудля 3 тегов, например, «asp.net», «.net», «c #».Это очень легко получить статьи, которые имеют эти теги.Но я не хочу этого.Я хочу получить статьи, которые имеют точно эти три тега или любые два или один из них , но не статьи с 4 илибольше тегов, включая их.Я не хочу результатов поиска с "asp.net", ".net", "c #", "ruby".Я хочу только следующие статьи с тегами:

"asp.net", ".net", "c#"

.net", "c#"

"asp.net", ".net"

"asp.net", "c#"

"c#"

"asp.net"

".net"

Что будет правильным запросом MySQL для этого?

1 Ответ

0 голосов
/ 03 июля 2011

Я думаю, что само присоединение может быть подходящим.Если бы вы запрашивали по трем тегам, вы бы, например, трижды присоединились к таблице article-tag.Однако я не уверен, как это будет масштабироваться.

Обновление: при таком подходе вам потребуется выполнить второй запрос, чтобы исключить эти совпадения с> 3 тегами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...