Ini pasti mungkin dengan MySQL, tetapi saya pikir Anda mungkin melakukannya dengan cara yang canggung. Saya akan mulai dengan menyusun tabel sebagai berikut:
TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )
Saat pengguna menambahkan minat, jika belum pernah ditambahkan sebelumnya, Anda menambahkannya ke Interests
tabel, lalu tambahkan ke UserInterests
meja. Bila Anda ingin memeriksa orang-orang terdekat lainnya dengan minat yang sama, Anda cukup menanyakan UserInterests
tabel untuk orang lain yang memiliki minat yang sama, yang sudah memiliki semua informasi itu untuk Anda:
SELECT DISTINCT userId
FROM UserInterests
WHERE interestId IN (
SELECT interestId
FROM UserInterests
WHERE userId = $JoesID
)
Ini mungkin dapat dilakukan dengan cara yang lebih elegan tanpa subkueri, tetapi itulah yang saya pikirkan sekarang.