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

MySQL Vấn đề đối sánh nhiều sở thích

Điều này chắc chắn có thể xảy ra với MySQL, nhưng tôi nghĩ rằng bạn có thể sẽ làm điều đó một cách khó xử. Tôi sẽ bắt đầu bằng cách cấu trúc các bảng như sau:

TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )

Khi người dùng thêm sở thích, nếu nó chưa được thêm trước đó, bạn thêm nó vào Interests và sau đó thêm nó vào UserInterests bàn. Khi bạn muốn kiểm tra những người lân cận khác có cùng sở thích, bạn có thể chỉ cần truy vấn UserInterests bảng dành cho những người khác có cùng sở thích, đã có tất cả thông tin dành cho bạn:

SELECT DISTINCT userId
  FROM UserInterests
  WHERE interestId IN (
     SELECT interestId
       FROM UserInterests
       WHERE userId = $JoesID
     )

Điều này có thể được thực hiện theo cách thanh lịch hơn mà không cần truy vấn phụ, nhưng đó là điều tôi nghĩ đến bây giờ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn bản ghi vào cơ sở dữ liệu mysql với php bằng Ajax

  2. Cách giải quyết mệnh đề ORDER BY không có trong danh sách SELECT gây ra MySQL 5.7 với SELECT DISTINCT và ORDER BY

  3. ClassCastException:java.math.BigInteger không thể được truyền sang java.lang.Long khi kết nối với MySQL

  4. Fluent Nhibernate:Không thể tạo kết nối cơ sở dữ liệu với MySQL

  5. Codeigniter db-> update () VS CẬP NHẬT gốc của MySQL Các hàng bị ảnh hưởng:0