Как внутреннее объединение таблицы поиска для запроса MySQL? - PullRequest
2 голосов
/ 07 июня 2019

Мне нужна помощь с запросом MySQL, используя следующие две таблицы:

профили (ТАБЛИЦА 1)

id  user_id gender  age height  bodytype
1   1         1     57    1        2
2   2         2     32    2        1

profile_lookup (ТАБЛИЦА 2)

id  option_group    option_value    option_name
1   gender                 1        Female
2   gender                 2        Male
3   gender                 3        Prefer not to say
4   height                 1        5 ft - 6  in
5   height                 2        5ft - 9 in
6   bodytype               1        Petite/slim
7   bodytype               2        Average

Существует множество других опций и значений опций, которые я опущу для краткости

Мне интересно выполнять запросы внутреннего соединения, используя синтаксис, показанный ниже:

SELECT * 
  FROM profiles 
 WHERE bodytype = 2 
  JOIN profile_lookup 
    ON profiles.gender = profile_lookup..... (not sure)

Запросить помощь в использовании правильного синтаксиса с использованием двух таблиц выше. Спасибо

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Я думаю, что вы хотите:

SELECT p.*, plg.option_name as gender
FROM profiles p INNER JOIN
     profile_lookup plg
     ON plg.option_group = 'gender' and
        plg.option_value = p.gender
WHERE p.bodytype = 2 ;

Вы можете распространить это на другие столбцы. Возможно, вы захотите LEFT JOIN в случае, если некоторые значения не совпадают (т.е. NULL):

SELECT p.*, plg.option_name as gender, plh.option_name as height
FROM profiles p LEFT JOIN
     profile_lookup plg
     ON plg.option_group = 'gender' AND
        plg.option_value = p.gender LEFT JOIN
     profile_lookup plh
     ON plh.option_group = 'height' AND
        plh.option_value = p.height
WHERE p.bodytype = 2 
1 голос
/ 07 июня 2019

Предложение where должно быть после предложения JOIN

SELECT * FROM profiles 
INNER JOIN profile_lookup ON profiles.gender = profile_lookup.option_value    
 and profile_lookup.option_group   = 'gender' 
WHERE profiles.bodytype = 2 

и для объединения вам нужен правильный profile_lookup.option_value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...