sql >> Databasteknik >  >> RDS >> Mysql

MySQL Matchningsproblem med flera intressen

Detta är definitivt möjligt med MySQL, men jag tror att du kanske gör det på ett besvärligt sätt. Jag skulle börja med att strukturera tabellerna enligt följande:

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

När en användare lägger till ett intresse, om det inte har lagts till tidigare, lägger du till det i Interests tabell och lägg sedan till den i UserInterests tabell. När du vill söka efter andra personer i närheten med liknande intressen kan du helt enkelt fråga UserInterests tabell för andra personer som har liknande intressen, som redan har all den informationen för dig:

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

Detta kan förmodligen göras på ett mer elegant sätt utan underfrågor, men det är vad jag tänkte på nu.



  1. pdo för att hämta data och fylla i en post

  2. Hur man får poster mellan 2 datum i MySQL

  3. Bästa tillvägagångssätt för grupperad median

  4. Beräknar MySQL och PHP datumskillnad i dagar