MYSQL データベースに異なるテーブルがあり、行を選択する前に特定の値をチェックする SELECT クエリを作成する必要があります。
基本的に 3 つのテーブル (news、tags、news_tags) です。
- news には、ニュースに関する情報が含まれています。
- タグに関するタグ情報。
- news_tags は、ニュースで使用されるタグを格納します。
これが私の3つの異なるテーブルです(もちろん単純化されています)
説明する:
ニュース:
id | status
1 | 1
2 | 1
3 | 0
タグ:
tag_id | tag_name
1 | name 1
2 | name 2
ニュースタグ:
id | news_id | tag_id
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 3 | 1
5 | 3 | 2
まず、各タグが何回使用されているかを知りたいと思いました。だから私はこのクエリを思いついた
SELECT tags.tag_name, news_tags.tag_id, COUNT(*) as count
FROM news_tags
LEFT JOIN tags
ON tags.tag_id = news_tags.tag_id
GROUP BY news_tags.tag_id
ORDER BY count DESC
これにより、次の出力が得られます
tag_name | count
name 1 | 3
name 2 | 2
今私の問題は、私がそれらを数えたくないということnews.status = 0
です; したがって、私の例を見ると、news
表の の行にid = 3
はstatus = 0
. は、表のcount
どこで有効になるべきではありません。news_id = 3
news_tags
基本的に、望ましい出力は
tag_name | count
name 1 | 2
name 2 | 1
ご協力ありがとうございました。