sql >> Databáze >  >> RDS >> Mysql

Jak ukládat značky do databáze pomocí MySQL a PHP?

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.



  1. Nelze se připojit k postgres ze vzdáleného hostitele

  2. Přístup odepřen pro uživatele 'root'@'localhost' (s použitím hesla:ANO) - Žádná oprávnění?

  3. Jak funguje ORIGINAL_DB_NAME() na serveru SQL Server

  4. Export mých dat z grafu Google (tabulky) do excelu nebo csv