MySQL Query для системы тегов, выбирая только используемые теги - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть система тегов, реализованная в PHP и MySQL, со следующими таблицами:

Таблица: blog_tags

  • tag_id
  • tag_name

Таблица: blog_tags_assoc

  • tag_assoc_id
  • article_id
  • tag_id

Таблица: blog_articles

  • article_id
  • article_title
  • article_content

Все они связаны с использованием отношения «многие ко многим» (ссылка на нечто похожее: Как хранить тегив тегах MySQL одно поле или одно поле для каждого тега? )

Теперь я пытаюсь сделать запрос MySQL, который выбирает все теги из blog_tags, на которые фактически ссылалисьпо статьям в blog_articles.

Пока я знаю, что "HAVING" - это то, что я мог бы использовать ... но я не уверен, как?Любые идеи или предложения будут приветствоваться.Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Если вы хотите знать только те теги, которые использовались в статьях, вы можете просто сделать это:

SELECT DISTINCT tag_id, tag_name
FROM blog_tags
INNER JOIN blog_tags_assoc USING ( tag_id );
1 голос
/ 30 сентября 2011

Будет получено имя тега, а также количество статей, в которых этот тег использовался.

SELECT
    `blog_tags`.`tag_name`,
    count(*) AS `blog_article_count`
FROM `blog_tags`
    JOIN `blog_tags_assoc`
        ON `blog_tags`.`tag_id`=`blog_tags_assoc`.`tag_id`
    JOIN `blog_articles`
        ON `blog_articles`.`article_id`=`blog_tags_assoc`.`article_id`
GROUP BY `blog_tags`.`tag_name`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...