MySQL объединяется с заявлениями по делу

У меня возникли проблемы с запросом. Я хочу объединить таблицы, если дело выполнено. Это запрос, с которым я работаю. Я новичок в этих заявлениях по делу, поэтому любая помощь очень ценится!

      SELECT 
        conversation.c_id,
        conversation.user_one,
        conversation.user_two,
        users.name,
        users.lastName
      FROM `conversation` 

      CASE
        WHEN conversation.user_one = 1
        THEN
          INNER JOIN `users`
          ON conversation.two = users.id

        WHEN conversation.user_two = 1
        THEN
          INNER JOIN `users`
          ON conversation.user_one = users.id
      END CASE

      WHERE `user_one` = 1 OR `user_two` = 1

1 ответ

Решение

Не вводите регистр всего внутреннего соединения, делайте регистр только в условии on в соединении. Это должно работать (если у меня нет опечаток):

  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

Вы также можете добиться похожего эффекта, если присоединиться к каждому из этих условий, а затем использовать оператор case в вашем операторе select, чтобы определить, из какой из двух таблиц будут отображаться записи.

Другие вопросы по тегам