У меня есть сценарий, на котором я немного застреваю. Скажем, у меня есть обзор о цветах, и у меня есть одна таблица для цветных данных и другой для ответов людей.
tbColors
color_code , color_name
1 , 'blue'
2 , 'green'
3 , 'yellow'
4 , 'red'
tbAnswers
answer_id , favorite_color , least_favorite_color , color_im_allergic_to
1 , 1 , 2 3
2 , 3 , 1 4
3 , 1 , 1 2
4 , 2 , 3 4
Для дисплея я хочу записать ВЫБОР, который представляет таблицу ответов, но использование color_name столбца от tbColors.
Я понимаю "самый глупый" способ сделать это: именование tbColors три раза в разделе FROM, с помощью другого псевдонима для каждого столбца для замены.
Как неглупый путь посмотрел бы?
Похоже, это то, что нужно:
SELECT
A.answer_id
,C1.color_name AS favorite_color_name
,C2.color_name AS least_favorite_color_name
,C3.color_name AS color_im_allergic_to_name
FROM tbAnswers AS A
INNER JOIN tbColors AS C1
ON A.favorite_color = C1.color_code
INNER JOIN tbColors AS C2
ON A.least_favorite_color = C2.color_code
INNER JOIN tbColors AS C3
ON A.color_im_allergic_to = C3.color_code
Вместо "глупого", я бы рискнул предположить, что это довольно стандартный запрос. Здесь также предполагается, что все столбцы будут иметь допустимые значения. В противном случае замените все INNER JOINs на LEFT JOINs