sql - tablas - Realizar unión interna para columnas múltiples en la misma tabla
unir dos consultas sql misma tabla (1)
Esto parece ser el camino a seguir:
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
En lugar de "estúpido", me atrevería a decir que esta es una consulta bastante estándar. Esto también supone que todas las columnas tendrán un valor válido. De lo contrario, reemplace todas las UNIONES INTERIORES con UNIONES IZQUIERDAS
Tengo un escenario en el que estoy un poco atascado. Digamos que tengo una encuesta sobre colores, y tengo una tabla para los datos de color y otra para las respuestas de las personas.
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
Para la visualización, quiero escribir un SELECCIONAR que presente la tabla de respuestas pero usando la columna color_name de tbColors.
Entiendo la manera "más estúpida" de hacerlo: nombrar tbColors tres veces en la sección FROM, usando un alias diferente para cada columna para reemplazar.
¿Cómo se vería una forma no estúpida?