2017-03-10 10 views
0

私の質問は、特定の条件に基づいてデータを結合することに関するものです。条件に応じたSQL JOIN

たとえば、表Aにはuser_typeという列があります。 user_typeが1の場合、テーブルBからINNER JOINを実行します。ただし、テーブルAのuser_typeが2の場合は、テーブルCからINNER JOINを実行します。

誰かが構文PHPの場合:-)

+1

[この回答](http://stackoverflow.com/questions/26518526/conditional-join-statement-sql-server)はSQL Serverのですが、私は、これは、同様のMySQLのために適用されるべきであると考えています。編集:または私は実際に[同様のMySQLの質問](http://stackoverflow.com/questions/1255492/conditional-join-in-mysql)を検索することができます。 – cteski

答えて

2

通常のように両方のテーブルでINNER JOINを使用し、CASE文を使用してテーブルBまたはテーブルCの結果を表示します。

SELECT  CASE WHEN tableA.user_type = 1 THEN tableB.user_type 
       WHEN tableA.user_type = 2 THEN tableC.user_type 
      END as user_type 
FROM  tableA 
INNER JOIN tableB 
ON   tableA.id = tableB.id 
INNER JOIN tableC 
ON   tableA.id = tableC.id 
+0

素敵な答えですが、 'WHEN tableA.user_type = 2 THEN tableC.user_type'を2行目にしてはいけませんか? –

+0

@MichaelKうん、コピー&ペーストミス – McNets

+0

upvoteに値する素晴らしい、素晴らしい解決策... –

関連する問題