2017-04-06 20 views
0

列の値が別のテーブル内の値の数に等しいレコードを取得するために: 表OracleのSQLクエリは、私は2つのテーブルを持っている

援助を| ImageCount

1 | 1
2 | 1
3 | 2

表B

入札 | AForeignKey

1 | 1
2 | 3
3 | RecordsInB AS

SELECT t1.AId、t1.ImageCount、COUNT(t2.AForeignKey)T1 左から:

3は、私は私に値を視覚的に比較を与えるこのクエリを、取得することができましたJOIN B t2 ON tw.AForeignKey = t1.AId GROUP BY t1.AId、t1.ImageCount

ImageCountがRecordsInBと等しくない行を削除する方法がわかりません。私は本当にそれを気にしていますが、私は視覚的に比較できるように上記のクエリの他の列を表示しています。

ので、出力は次のようになります。

援助

あるいは視覚的に比較するための

援助 | ImageCount | RecordsInB

1 | 1 | 1

3 | 2 | 2

私はそれが理にかなっていると思います。

+0

が見えます。私はそれが働くことができるかどうかを見ます。 – user2066464

+0

表示する列のみを選択し、選択した列から 'distinct'を追加します。希望の結果をもたらすだろうか? – Elyasin

答えて

1

私がよく理解している場合は、クエリの結果をフィルタリングして、行をそのまま維持する必要があります。having t1.imageCount = COUNT(t2.AForeignKey)

もしそうなら、単にあなたのクエリにこの条件を追加:私は申し訳ありませんが、テーブルを行う方法がわからないよう

SELECT t1.AId, t1.ImageCount, COUNT(t2.AForeignKey) AS RecordsInB 
FROM tableA t1 
LEFT JOIN tableB t2 ON t2.AForeignKey = t1.AId 
GROUP BY t1.AId, t1.ImageCount 
having t1.imageCount = COUNT(t2.AForeignKey) 
+0

うわー!単に「持っている」部分が欠落しています。私はそれについてもっと学ぶ必要があると思う。ありがとうございました! – user2066464

関連する問題