Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да съхранявате маркери в база данни, използвайки MySQL и PHP?

Трябва да разделите данните си между две таблици, questions и tags и ги свържете с помощта на questions_tags присъедини маса.

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
);

Не съм сигурен какво е count колоната в оригиналната ви таблица е за, затова я пропуснах.

С помощта на горните таблици можете да използвате обединения, за да намерите всички въпроси с определен маркер или всички тагове на въпрос.

Редактиране

За да получите броя на всеки маркер, можете да направите нещо подобно:

  SELECT tag,
         count(*) AS c
    FROM tags
GROUP BY tag;

Редактиране

За да получите броя на всички тагове за всички въпроси, направете следното:

  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;

Ако искате само броят за конкретни маркери или въпроси, добавете допълнително WHERE клаузи.

Забележка :Всички SQL по-горе не са тествани.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-ефективният начин за съхраняване на IP адрес в MySQL

  2. Как да напиша миграция за промяна на първичния ключ на модела с ManyToManyField

  3. MySQL хеш индекси за оптимизация

  4. IMAP &PHP - Извличане на всички имейли от папки за изпратени и входящи

  5. не мога да инсталирам MySQL-Python