2

私は3つのテーブルを持っています:

A(k1,A) B(k1,k2,B)C(k2,C)

C.k2条件を満たすすべてのAをフィルタリングしたい。この例では、テーブル B をフィルタリングする必要があります: A と同じ k1 属性を持つすべての B をフィルタリングし、B を持つすべての C k2 属性をフィルタリングします (以前にフィルタリングしたもの)。

私はこれを行う醜い方法を持っています:

select * from A where k1 in (select * .....)// 見た目が悪く、追跡が難しい

関数の使用については考えていますがjoin、これを行う方法が本当にわかりません。このクエリの最良の方法を教えてください。

ありがとう :)

4

4 に答える 4

7

このクエリを試してください。

select * from A
join b on a.k1 = b.k1
join c on c.k2 = b.k2

JOINの説明

ここに画像の説明を入力

于 2013-05-29T04:07:02.940 に答える
1

結合を使用して、2 つ以上のテーブルからデータを取得します。結合の基礎を参照してください

SELECT A.k1,B.k2 
FROM A 
JOIN B ON A.k1 = B.k1 
JOIN C ON B.k2 = C.k2
于 2013-05-29T04:13:46.320 に答える
1

とても簡単に聞こえます:

select * from A
join B on B.k1 = A.k1
join C on C.k2 = B.k2
于 2013-05-29T04:04:58.123 に答える
1

テーブル構造を正しく読んでいれば、結合ロジックは次のようになります。

SELECT * 
FROM  A
JOIN B
  ON A.k1 = B.k1
JOIN C
  ON B.k2 = C.k2

もちろん、値を取得するテーブルを SELECT で指定できます。つまり、次のようになります。

SELECT A.*,C.*

または WHERE ie で結果を制限します。

WHERE C.C = 'something'
于 2013-05-29T04:05:14.983 に答える