0

次のSQLクエリを使用しています..

    SELECT *,
CASE
WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id
WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id
END as from_user_id
 FROM messages JOIN users ON from_user_id=users.id

from_user_idしかし、JOIN ステートメントで to を使用するにはどうすればよいでしょうか。機能していないようです。

4

1 に答える 1

4

CASE 式で名前を付けているエイリアスは、JOIN では使用できません。JOIN でエイリアスを使用する場合は、サブクエリで CASE をラップできます。

select *
from
(
    SELECT *,
        CASE
        WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id
        WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id
        END as from_user_id
    FROM messages 
) m
JOIN users 
  ON m.from_user_id=users.id
于 2013-07-15T19:30:11.857 に答える