既存のテーブルデータのクエリを作成しようとしています。TABLE_AとTABLE_Bには1つのレコードがありますが、TABLE_Cには2つのレコードがあります。1つは自宅の住所用で、もう1つは職場の住所用です。
したがって、次のクエリは2つのレコードを返します。2つのレコードから1つのレコードだけを取得しようとしています。
CITYがNULLの場合、address_type = 1(Home)のstate_idはnullであり、Work(address_type = 2)アドレスを取得します。両方がnullの場合は、「ホーム」アドレスを取得します。この機能を実現するための最良の方法は何ですか。
提案ありがとうございます。
select a.A_ID, a.B_ID, a.A_DESC, b.first_name, b.last_name, c.address_type, c.city, c.state
from table_A a
left join table_B b on b.B_ID = a.B_ID
left join table_C c on c.B_id = b.B_id
where a.A_ID = 10
TABLE_A
A_ID int
B_ID int
A_Desc varchar(20)
TABLE_B
B_ID int
first_name varchar(30)
last_name varchar(30)
TABLE_C
C_ID int
B_ID int
address_type int
city varchar(50)
state int
結果:
A_ID B_ID A_DESC first_name last_name address_type city state
--------------------------------------------------------------------------------
10 200 test_ name1 name_last 1 NULL NULL
10 200 test_ name1 name_last 2 City_test 2
この最終結果が欲しい
A_ID B_ID A_DESC first_name last_name address_type city state
--------------------------------------------------------------------------------
10 200 test_ name1 name_last 2 City_test 2