データを2つのテーブルquestions
に分割する必要があります およびtags
questions_tags
を使用してそれらを関連付けます テーブルに参加します。
CREATE TABLE questions (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
url TEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE questions_tags (
question_id INT UNSIGNED NOT NULL REFERENCES questions,
tag_id INT UNSIGNED NOT NULL REFERENCES tags
);
count
が何であるかわかりません 元のテーブルの列はのためのものなので、スキップしました。
上記の表を使用すると、結合を使用して、特定のタグを持つすべての質問または質問のすべてのタグを見つけることができます。
編集
各タグの数を取得するには、次のようにします。
SELECT tag,
count(*) AS c
FROM tags
GROUP BY tag;
編集
すべての質問のすべてのタグの数を取得するには、次のようにします。
SELECT t.tag,
q.question_id,
count(*) AS c
FROM tags AS t,
questions_tags AS qt
questions AS q
WHERE t.id = qt.tag_id
AND qt.question_id = q.id
GROUP BY t.id, q.id;
特定のタグまたは質問のカウントのみが必要な場合は、WHERE
を追加してください 条項。
注 :上記のすべてのSQLはテストされていません。