2016-10-29 3 views
1

Я следующий запрос:Выясните, с какой столбец значение другого столбца соответствует

SELECT g.group_player1_user_id, g.group_player2_user_id, g.group_player3_user_id, g.group_player4_user_id, r.runk_user_id 
FROM groups g 
JOIN runks r 
ON g.group_id = r.runk_group_id 

Это даст следующий результат:

enter image description here

Мне нужно знать, если мой «runk» принадлежит игроку 1, 2, 3 или 4. Как узнать, какой столбец соответствует моему runk_user_id?

(я знаю, не все user_ids будет соответствовать, но это потому, что я играл с моими данными. Это не произойдет в производственной версии)

ответ

1

Вы должны проверить все их. Вы можете сделать это довольно элегантным способом с помощью выражения case:

SELECT r.runk_user_id, 
     CASE r.runk_user_id WHEN g.group_player1_user_id THEN 'player 1' 
          WHEN g.group_player2_user_id THEN 'player 2' 
          WHEN g.group_player3_user_id THEN 'player 3' 
          WHEN g.group_player4_user_id THEN 'player 4' 
          ELSE 'no player matches' 
     END AS player 
FROM groups g 
JOIN runks r ON g.group_id = r.runk_group_id 
Смежные вопросы