Đ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ờ.