2013-04-29 252 views
0

我必須編寫一個自定義的解釋器,它模擬SQL查詢數據庫上的三個表:ABC。我的問題如下:做以下查詢返回相同的結果?SQL查詢結果

select A1 
from A 
where A1 = 1; 

select A1 
from A, C 
where A1 = 1; 

正如我寫它,這兩個提供不同的結果,因爲from子句中所添加的表格中。但我不確定這是否正確;結果應取決於from子句中的表或where子句中的連接(或缺少)?

回答

2

第二個會返回所有匹配de A的where行和C表中的所有行。由於這些表格之間沒有定義關係。它通常稱爲笛卡爾產品。

如果您想要A和C之間的關係,您需要在這些關係之間進行連接,例如匹配模式的A.C_ID = C.ID或LEFT |根據你想要的結果集合RIGHT加入。

+1

它有時也被稱爲'CROSS JOIN'。 – RickF 2013-04-29 15:06:54