私は3つのテーブルを持っています。A、B、C。A は B と 1 対多を持ちます。B は C と 1 対多を持ちます。
テーブル内のデータは、
TABLE A
id
10
15
TABLE B
id firstName AandB_Relation_Key
55 Abc 10
66 Pqr 10
77 xyz 10
88 ddd 15
TABLE C
id phone_no CandB_Relation_key
41 44444 77
42 55555 77
43 66666 77
44 88888 66
次のような方法で、単一のクエリでテーブル A の ID に応じてテーブル C からデータを取得したかったのです。
テーブル B にテーブル C の関連レコードがある場合、B と C の両方のレコードを表示したい場合は、テーブル B のレコードのみを表示します (つまり、ここでは firstName "xyz" に複数の電話番号があるため、xyz = 44444,55555,66666, ddd を表示します)電話がないので、ddd のみ)
現在、私は
a) AandB_Relation_Key=テーブル A の ID であるテーブル B からすべての ID を選択 // テーブル A の ID に対してテーブル B のすべての ID を返す
b) 次に、すべての id を反復処理し、テーブル C から各 id に対して count(*) を取得し、テーブル C から count(*) を選択します。ここで、id = a) から ID を取得します。
c) カウント > 0 の場合、テーブル B、C から firstName,phoneNo を選択
d) それ以外の場合は、テーブル B から firstName を選択します
ありがとう。