2016-09-01 8 views
-1

条件付きcaseステートメントを実行しようとしていますが、sqlがこれを実行できるかどうかわかりません。 テーブルAからIDを選択し、テーブルBの対応するIDから名前を選択する必要があります。テーブルBの名前がNULLの場合、テーブルCから名前を選択する必要があります。これを行う方法がわかりません可能ならば、どんな助けも大いに訴えられる。3つのテーブルを使用する条件式selectステートメント

Table A  Table B   Table C  
ID ID2  ID2 Name  ID2 Name  
________  ___________  ___________ 
1  3  1  bill  1  NULL   
2  2  2  steve  2  NULL 
3  1  3  NULL  3  george 
+0

あなたはPHPを使いますか? – Igbaryya

+0

MYSQLだけでなく、インポートのためにtalendを使用しています – user2168066

答えて

0

BまたはCから適切な列を選択するにはIFNULL()を使用してください。

SELECT a.id, IFNULL(b.name, c.name) AS name 
FROM a 
JOIN b ON a.id = b.id2 
JOIN c ON a.id = c.id2 

が一致する行が Bまたは Cから欠落することができれば、 LEFT JOIN代わりの JOINを使用しています。

0

すると、次のクエリを試してみてください。

select IFNULL(TableB.name, TableC.name) as name 
from TableA 
left join TableB TableA.ID2=TableB.ID2 
left join TableC TableA.ID2=TableC.ID2 
+0

なぜ内部結合またはその他の代わりに左結合を使用しますか? – Lucas

+0

@ I'mBlueDaBaDee TableBまたはTableCに行が存在しない場合、内部結合によって空の結果セットが生成されます。 –

+0

これはテストでした! :) – Lucas

0

私はあまりにも遅かった:それは誰かを助けるかもしれない場合のpここで は、フィドルです:http://sqlfiddle.com/#!9/b28c5/2

私は各ID2の値が両方に存在すると仮定しましたTableB/TableCのいずれもない。

関連する問題