2017-07-22 13 views
0

質問をどのようにフレーズするのかは分かりませんが、最初に以下のことをするのが面倒ですが、苦労しています。残念なことに、正確なDBエンジンがIBM原産である可能性が高いとは言えません。SQLで拡張選択

単純なデータの例行う:だから

TRANSACTIONS 
Trans_ID Product_code 
    1  A1 
    1  B2 
    1  A9 
    2  B3 
    2  B4 
    3  A1 
    3  A9 
    3  A8 
    4  C2 
    5  D3 
    5  A1 

を、私は、しかし、私は結果のすべての行を取得する必要があるだろう、トランザクションIDを識別するために、特定の製品コード(すなわちA1)を使用することができています一致する商品コードが見つかる取引IDを含む

しかし、私は

ので、結果はこれを表示する必要があるなどTRANSID 3で、その後、TRANSID 1と3行をすべての3行を受信する必要があるだろう、私はキーとして商品コードA1を使用することができることを意味

Trans_ID Product_code 
    1  A1 
    1  B2 
    1  A9 
    3  A1 
    3  A9 
    3  A8 
    5  D3 
    5  A1 
+1

'select * from X where trans_id in(Xからのtrans_idの選択product_code = 'A1')'? – melpomene

+0

ありがとう、それはうまくいった – dotsent12

答えて

2

このようなクエリに対処する方法はいくつかあります。コメントで述べた最初の1:私は、私が欠けていると信じている

select x1.trans_id, x1.product_code 
from X x1 join 
    X x2 
    on x1.trans_id = x2.trans_id 
where x2.product_code = 'A1' 

:自己結合を使用して

select * 
from X x1 
where exists (select * 
       from X x2 
       where product_code = 'A1' and x1.trans_id = x2.trans_id 
      ) 

次の1:

select * 
from X 
where trans_id in (select trans_id from X where product_code = 'A1') 

は、使用して、第2の1は、オペレータが存在しますしかし、他の単純な解決策(ANYを使用するなど)は、最も単純なものです。

関連する問題