Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để lưu trữ thẻ trong cơ sở dữ liệu bằng MySQL và PHP?

Bạn nên tách dữ liệu của mình giữa hai bảng, questions và thẻ tags và liên hệ chúng bằng cách sử dụng questions_tags tham gia bảng.

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

Tôi không chắc count là bao nhiêu cột trong bảng ban đầu của bạn là dành cho nên tôi đã bỏ qua.

Sử dụng các bảng trên, bạn có thể sử dụng các phép nối để tìm tất cả các câu hỏi có một thẻ nhất định hoặc tất cả các thẻ của một câu hỏi.

Chỉnh sửa

Để có được số lượng cho mỗi thẻ, bạn có thể làm như sau:

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

Chỉnh sửa

Để nhận được số lượng tất cả các thẻ cho tất cả các câu hỏi, hãy làm như sau:

  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;

Nếu bạn chỉ muốn số lượng cho các thẻ hoặc câu hỏi cụ thể, hãy thêm WHERE mệnh đề.

Lưu ý :Tất cả SQL ở trên đều chưa được kiểm tra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli hay chết, nó có phải chết không?

  2. Mysql - cách đặt tăng tự động bắt đầu từ 0

  3. Xếp hạng top-N của MySQL và tổng hợp phần còn lại của cùng một nhóm

  4. Cách nhận dữ liệu tuần hiện tại trong MySQL

  5. Tắt ký hiệu khoa học MySQL