sql >> Databáze >  >> RDS >> Mysql

MySQL Problém s párováním více zájmů

To je určitě možné s MySQL, ale myslím, že na to jdeš nešikovným způsobem. Začal bych strukturováním tabulek takto:

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

Když uživatel přidá zájem, pokud ještě nebyl přidán, přidáte jej do Interests tabulky a poté ji přidejte do UserInterests stůl. Chcete-li vyhledat další blízké lidi s podobnými zájmy, můžete jednoduše zadat dotaz na UserInterests tabulka pro ostatní lidi, kteří mají podobné zájmy, která už pro vás má všechny tyto informace:

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

Pravděpodobně to půjde udělat elegantnějším způsobem bez dílčích dotazů, ale teď mě to napadlo.



  1. Přehled nabídek Amazon RDS a Aurora pro PostgreSQL

  2. Sjednocující dotazy z různých databází v Laravel Query Builder

  3. Seznam s vícenásobným výběrem státu nezobrazuje všechna města v jiném seznamu (Php, mysql, ajax)

  4. Nastavení tabulky zeměpisné šířky a délky v MySQL