組合と非常に異なることを行うに参加します。 UNIONはクエリの最後にレコードを追加し、JOINはレコードの末尾にフィールドを追加します。
UNIONクエリが機能する場合は、それに固執することをお勧めします。あなたが本当にJOINでこれをやりたければ、あなたは以下を行い、それに応じてあなたのワークフローを変更することができます。
SELECT message_id, message_title, user.name, corp.name
FROM group_messages
LEFT JOIN users ON
users.user_id = group_messages.user_id
AND group_messages.usertype = "1"
LEFT JOIN corp ON
corp.user_id = group_messages.user_id
AND group_messages.usertype = "0"
;
これは、ユーザーフィールドのフィールドと企業のフィールドを返すレコードです。ユーザータイプが1の場合、ユーザーフィールドにはデータが入力され、企業フィールドはNULLになります。 usertypeが0の場合、企業フィールドにデータが入力され、ユーザーフィールドはnullになります。返されたユーザータイプを読み取って、読み取るフィールドのセットを決定するアプリケーションロジックを作成する必要があります。
あなたがそういったことをしたら、2つの別々のクエリを作成するほうがずっと優れています。
各タイプのデータを別々のフィールドに入れたくない場合は、JOINを使用しないでください。各タイプのデータが同じフィールドに返されるようにするには、既に持っているUNIONが必要です。
関連性のないエンティティを1つのテーブルに配置しないでください。ユーザーテーブル内のユーザー、組織テーブル内の組織この奇妙なクエリを本当に書く必要がある場合は、UNIONが機能します。 –