2016-06-23 10 views
1

私はPlSQLの初心者です。私は2つのテーブル間の関係を表し、このテーブルを持っている:値以上の外部キーを持つレコードを選択するにはどうすればよいですか?

ID T1Id T2Id 
-- ---- ---- 
1 1 1 
2 2 1 
3 2 2 
4 2 3 
5 3 1 
... 

Iは3オン(T2Id)から1つ以上の値を有することができる第2カラム(T1Id)の値を有します。 私の質問は、1つ以上のT1Id値を持つT1Id値だけを選択する方法です。

ご存知ですか?

+1

を達成するために、行のパーティションを使用することができます。ブリッジテーブルにIST独自のIDを与えることは珍しいです。これはあなたが通常必要としないものです。ですから、テーブルから削除して、 't1id' +' t2id'を主キーにすることをお勧めします。 (もしあなたがIDに固執すれば、必要なすべての固有の制約、つまり 'id'に1つ、' t1id' + 't2id'に1つ)を確保する必要があります。 –

+0

@ThorstenKettner Yeap、私はそれについて考えなかった。ありがとう – Chinovski

答えて

3

テーブル内に複数のT1Id値が必要な場合は、以下を使用できます。

select T1Id, count(T1Id) as countT1 from yourTable 
group by T1Id 
having count(T1Id) > 1 

あなたが他の列を選択したい場合は、テーブルのデザインに関しては、この

SELECT * 
    FROM (SELECT a.*, COUNT (*) OVER (PARTITION BY t1id) AS countT1 
      FROM yourTable a) 
WHERE countT1 > 1 
関連する問題