2012-10-13 93 views
0

當我們做一個查詢,如本SQL WHERE和AND子句

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行

你怎麼來到這個特殊的問題 -我讀我的書和在做它

問題我一直試圖解決這個問題 -我想谷歌和閱讀不同的崗位,但大多隻是展示瞭如何做到這一點,而不是解釋什麼實際happpening

+0

我認爲在哪裏和AND將工作? – Dino55

+1

如果您告訴我們您要做什麼,如何處理這個特定問題以及您嘗試解決這個問題,這可能會是一個更好的問題。 (作爲一個更好的問題,它會產生更好的答案。) – bdares

+0

@bdares,接受了您的建議。謝謝 – Dino55

回答

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 

結果是。因爲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

+0

你的答案是驚人的:)我現在完全理解。非常感謝你! – Dino55

1

結果集的大小取決於(與出現的條件相匹配的A,B和C實體的三元組的數量)。

現在,這完全取決於數據。您可以有一組數據,其中A.type全部爲Apples,B.type全部爲Oranges,並且您的條件永遠不會滿足,因此您的結果集爲空。另一方面,所有行的類型都是匹配的,所以最終會得到每一個可能的組合,或者5 * 8 * 7個結果行。

+0

非常感謝:) – Dino55