Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL verbindet sich mit Case-Anweisungen

Setzen Sie nicht den gesamten inneren Join in Groß-/Kleinschreibung, sondern nur die 'on'-Klausel im Join. Das sollte funktionieren (außer ich habe Tippfehler):

  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

Sie können auch einen ähnlichen Effekt erzielen, indem Sie bei jeder dieser Bedingungen eine linke Verbindung herstellen und dann die case-Anweisung in Ihrer select-Anweisung verwenden, um zu bestimmen, aus welcher der beiden Tabellen Datensätze angezeigt werden sollen.