Měli byste svá data rozdělit do dvou tabulek, questions
a tags
a spojte je pomocí questions_tags
připojit tabulku.
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
);
Nejsem si jistý, jaký je count
sloupec ve vaší původní tabulce je pro, takže jsem ho přeskočil.
Pomocí výše uvedených tabulek můžete použít spojení k nalezení všech otázek s určitou značkou nebo všech značek otázky.
Upravit
Chcete-li získat počet pro každou značku, můžete udělat něco takového:
SELECT tag,
count(*) AS c
FROM tags
GROUP BY tag;
Upravit
Chcete-li získat počty všech značek pro všechny otázky, postupujte takto:
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;
Pokud chcete pouze počet pro konkrétní značky nebo otázky, přidejte další WHERE
klauzule.
Poznámka :Všechny výše uvedené SQL nejsou testovány.