-1

このようなクエリを実行すると

SELECT COUNT(*)
FROM A, B, C
WHERE A.type = B.type
AND B.cost = C.cost

結果表について何が言えますか? 結果テーブルのサイズは? A が 5 行、B が 8 行、C が 7 行の場合

編集: マークダウンする代わりに、いくつかの応答を得ることができますか? 私は SQL を初めて使用するので、助けが必要です。

EDIT2:私がやろうとしていること - WHERE 句と AND 句がどのように機能するか、および結果テーブルに 8 行ある理由を理解する

この特定の質問にたどり着いた方法 - 私は教科書を読んで、その中の問題を解いていました

私が解決しようとしたこと - Google を試し、さまざまな投稿を読みましたが、実際に何が起こっているのかを説明する代わりに、ほとんどの投稿はその方法を示しているだけです

4

2 に答える 2

5

カウントは、共通値の数になります。たとえば、この小さな例を考えてみましょう

DECLARE @A Table(Val1 Int)
Insert Into @A Values(1),(2),(3),(4),(5)


DECLARE @B Table(Val2 Int)
Insert Into @B Values(1),(2),(3),(4),(5),(6)


DECLARE @C Table(Val3 Int)
Insert Into @C Values(1),(2),(3),(4),(5),(6),(7)


SELECT COUNT(*)
FROM @A a, @B b, @C c
WHERE a.Val1 = b.Val2
AND b.Val2 = c.Val3

結果は5です。a.Val1 = b.Val21,2 3,4,5 という 5 つの共通要素があるためです。現在b.Val2 = c.Val3、1、2、3、4、5、6 の 6 つの共通要素があります。

次に、これら 2 つの結果セットが互いに作用し、交差する値、つまり共通の値である 1、2、3、4、5 を取得しようとします。したがって、カウントは 5 です

于 2012-10-13T04:25:49.560 に答える
1

結果セットのサイズは、当然のことながら、条件に一致する A、B、および C エンティティの 3 タプルの数に依存しWHEREます。

さて、これは完全にデータに依存します。ApplesA.type が allで、B.type が all であるデータのセットを持つことができOranges、条件が満たされないため、結果セットは空になります。

反対に、すべての行の型が一致するため、考えられるすべての組み合わせ、つまり 5*8*7 行の結果になります。

于 2012-10-13T04:31:25.183 に答える