J'ai un scénario sur lequel je suis un peu coincé. Disons que j'ai une enquête sur les couleurs, et j'ai un tableau pour les données de couleur et un autre pour les réponses des gens.
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
Pour l'affichage, je veux écrire un SELECT qui présente le tableau des réponses mais en utilisant la colonne color_name de tbColors.
Je comprends la façon "la plus stupide" de le faire: nommer tbColors trois fois dans la section FROM, en utilisant un alias différent pour chaque colonne à remplacer.
À quoi ressemblerait une manière non stupide?
Cela semble être la voie à suivre:
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
Plutôt que "stupide", je me risquerais à dire que c'est une requête assez standard. Cela suppose également que toutes les colonnes auront une valeur valide. Sinon, remplacez toutes les jointures INNER par des jointures LEFT