sql >> Databasteknik >  >> RDS >> Mysql

Hur lagrar jag taggar i en databas med MySQL och PHP?

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.



  1. skriv ut start- och slutdatum på en rad för kontinuerliga eller överlappande datumintervall i Oracle SQL

  2. Hur upptäcker man att transaktionen redan har påbörjats?

  3. Hur man skapar utlösare för att lägga till ändringshändelser i granskningsloggtabeller

  4. C#, problem med att få dubbla värden från MySQL-databasen