2013-04-29 151 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