sql >> Database >  >> RDS >> Mysql

MySQL Probleem bij het matchen van meerdere interesses

Dit is zeker mogelijk met MySQL, maar ik denk dat je het misschien op een ongemakkelijke manier aanpakt. Ik zou beginnen met het structureren van de tabellen als volgt:

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

Wanneer een gebruiker een interesse toevoegt, als deze nog niet eerder is toegevoegd, voegt u deze toe aan de Interests tabel, en voeg het dan toe aan de UserInterests tafel. Als u wilt zoeken naar andere mensen in de buurt met dezelfde interesses, kunt u eenvoudig de UserInterests opvragen tabel voor andere mensen met dezelfde interesses, die al die informatie al voor u heeft:

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

Dit kan waarschijnlijk op een elegantere manier worden gedaan zonder subquery's, maar daar dacht ik nu aan.



  1. MySQL, json, JSON_ARRAY_APPEND - waarom werkt append niet op 5.7.13?

  2. MySQL:unieke index die de `null`-waarden niet respecteert

  3. Hoe gebruik je mysqldump voor een deel van een tafel?

  4. MySQL CURRENT_TIMESTAMP bij aanmaken en bijwerken