0

2 つのテーブル間に一方向に多くの関係があり、複数の関係を持つ行のみを返す 2 つのテーブル間に SQL ステートメントを書き込もうとしています。私はおそらくこれを恐ろしく表現しているので、ここに例を示します。

テーブル A に、テーブル A の主キーである列「key_a」があるとします。テーブル B には 2 つの列があります。1 つ目はテーブル B の主キーである「key_b」と呼ばれ、2 つ目の列は「A.has_a」との関係を持つ外部キーである「key_a」と呼ばれます。アプリケーション ロジックは、テーブル A の行エントリがテーブル B の 0 ~ n 行の関係を持つことができる一方で、テーブル B の行がテーブル A の 1 つの行と正確に関係を持つことを保証するために実装されています。

「B.key_a」列を介してテーブル B に関係をマッピングするテーブル B に複数の行がある「A.key_a」の行エントリを返す SQL クエリを作成するにはどうすればよいですか?

4

1 に答える 1

1
SELECT key_a, a.<<other columns>>, COUNT( b.key_b )
  FROM table_a a
       JOIN table_b b USING (key_a)
 GROUP BY key_a, a.<<other columns>>
HAVING COUNT( b.key_b ) > 1

table_aに複数の一致する行がある場所からのデータを提供しますtable_b。からすべてのデータを取得するのではなく、key_a複数の行を持つ値のみを取得することに関心がある場合は、 への参照を完全に削除して、 andのみを実行できます。table_btable_atable_aGROUP BYHAVINGtable_b

于 2012-10-15T22:00:47.280 に答える