Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL se joint aux déclarations de cas

Ne casse pas toute la jointure interne, fais la casse uniquement sur la clause 'on' dans la jointure. Cela devrait fonctionner (sauf si j'ai des fautes de frappe):

  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

Vous pouvez également obtenir un effet similaire en joignant à gauche chacune de ces conditions, puis en utilisant l'instruction case dans votre instruction select pour déterminer de laquelle des deux tables afficher les enregistrements.