Du bör dela upp din data mellan två tabeller, questions
och tags
och relatera dem med en questions_tags
gå med i tabellen.
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
);
Jag är inte säker på vad count
är kolumnen i din ursprungliga tabell är för så jag hoppade över den.
Med hjälp av ovanstående tabeller kan du använda joins för att hitta alla frågor med en viss tagg eller alla taggar för en fråga.
Redigera
För att få räkningen för varje tagg kan du göra något i stil med detta:
SELECT tag,
count(*) AS c
FROM tags
GROUP BY tag;
Redigera
Gör så här för att få antalet taggar för alla frågor:
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;
Om du bara vill ha räkningen för specifika taggar eller frågor lägg till ytterligare WHERE
klausuler.
Obs :All SQL ovan är oprövad.