Você deve dividir seus dados entre duas tabelas,
questions
e tags
e relacioná-los usando um questions_tags
juntar tabela. 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
);
Não tenho certeza de qual é a
count
coluna em sua tabela original é para então eu a ignorei. Usando as tabelas acima, você pode usar junções para encontrar todas as perguntas com uma determinada tag ou todas as tags de uma pergunta.
Editar
Para obter a contagem de cada tag, você pode fazer algo assim:
SELECT tag,
count(*) AS c
FROM tags
GROUP BY tag;
Editar
Para obter as contagens de todas as tags para todas as perguntas, faça o seguinte:
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;
Se você quiser apenas a contagem de tags ou perguntas específicas, adicione
WHERE
adicional cláusulas. Observação :Todo o SQL acima não foi testado.