Dovresti dividere i tuoi dati tra due tabelle, questions
e tags
e relazionali usando un questions_tags
unisciti al tavolo.
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
);
Non sono sicuro di cosa count
la colonna nella tabella originale è per quindi l'ho saltata.
Utilizzando le tabelle precedenti puoi utilizzare i join per trovare tutte le domande con un determinato tag o tutti i tag di una domanda.
Modifica
Per ottenere il conteggio per ogni tag potresti fare qualcosa del genere:
SELECT tag,
count(*) AS c
FROM tags
GROUP BY tag;
Modifica
Per ottenere il conteggio di tutti i tag per tutte le domande, procedi come segue:
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 vuoi solo il conteggio per tag o domande specifici aggiungi ulteriore WHERE
clausole.
Nota :Tutto l'SQL sopra non è stato testato.