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

Nhận tất cả các bài đăng có một thẻ cụ thể và giữ tất cả các thẻ khác trên kết quả bằng SQL

Tôi cho rằng bạn rất vui khi gửi hai yêu cầu đến cơ sở dữ liệu.

Đầu tiên, nhận tất cả các bài đăng cho một thẻ nhất định:

SELECT * FROM blog_posts bp 
WHERE EXISTS (SELECT * FROM blog_tags bt INNER JOIN
               tags t ON t.id = bt.tag_id
              WHERE bp.id = bt.post_id
               AND t.tag = @SearchTag)

Thứ hai, bạn muốn gắn thẻ, tôi đoán, được liên kết với thẻ bạn đang tìm kiếm thông qua các bài đăng:

Thẻ
SELECT * FROM tags t
WHERE EXISTS ( -- Here we link two tags via blog_tags
               SELECT * FROM blog_tags bt1 INNER JOIN
               blog_tags bt2 ON bt1.post_id = bt2.post_id
                     AND bt1.tag_id != bt2.tag_id INNER JOIN
               tags t ON t.id = bt1.tag_id
               WHERE t.tag = @SearchTag
                  AND t.id = bt2.tag_id
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP CRUD Tạo, chỉnh sửa, cập nhật và xóa bài đăng với cơ sở dữ liệu MySQL

  2. PHP / MySQL:Tạo kết nối mới cho mỗi truy vấn?

  3. Kiểu dữ liệu lý tưởng để sử dụng khi lưu trữ vĩ độ / kinh độ trong cơ sở dữ liệu MySQL là gì?

  4. Tại sao không có khóa nào được sử dụng trong GIẢI THÍCH này?

  5. Ai đó có thể giải thích chi tiết về tính năng Lập chỉ mục của Magentos không?