当我们进行此类查询时
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行
你是如何解决这个问题的?我正在阅读我的教科书并在其中提出问题
我试图解决这个问题 - 我尝试了谷歌并阅读了各种帖子,但大多数帖子只是展示了如何做而不是解释实际上开心的事情
答案 0 :(得分: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.Val2
有5个共同元素,即1,2 3,4,5。现在b.Val2 = c.Val3
有6个共同元素,即1,2,3,4,5,6。
然后这两个结果集将相互作用并试图得到相交的值,即常见值,即1,2,3,4,5。因此计数为5
答案 1 :(得分:1)
不出所料,结果集的大小取决于符合WHERE
条件的A,B和C实体的3元组数。
现在,这完全取决于数据。您可以拥有一组数据,其中A.type全部为Apples
,而B.type全部为Oranges
,您的条件永远不会满足,因此您的结果集为空。
另一方面,所有行的类型都匹配,因此最终会得到每个可能的组合,或者5 * 8 * 7个结果行。