Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Joins Com Instruções Case


Não case a junção interna inteira, faça o case apenas na cláusula 'on' na junção. Isso deve funcionar (a menos que eu tenha erros de digitação):
  SELECT 
    conversation.c_id,
    conversation.user_one,
    conversation.user_two,
    users.name,
    users.lastName
  FROM `conversation` 
  INNER JOIN `users`
  on
  users.id =
  CASE
    WHEN conversation.user_one = 1
    THEN conversation.two 
    WHEN conversation.user_two = 1
    THEN conversation.user_one   
 END
 WHERE `user_one` = 1 OR `user_two` = 1

Você também pode obter um efeito semelhante juntando à esquerda em cada uma dessas condições e, em seguida, usando a instrução case em sua instrução select para determinar de qual das duas tabelas exibir registros.