2012-08-25 22 views
0
select s.staff_name, s2.staff_name 'supervisor name' 
from staff_relation s, staff_Relation s2 
where s.staff_no = s2.supervisor 

秩序的连接条件会导致不同的结果

select s.staff_name, s2.staff_name 'supervisor name' 
from staff_relation s, staff_Relation s2 
where s.supervisor = s2.staff_no 

他们都提供了不同的结果。这是为什么?

UPDATE:不知道,如果有帮助,

Table image link 此图片是我创建了一个小桌子。

上面是我创建的小表的图像。

当我执行第一个命令时,它显示Anita是Ruth的主管。这是错误的。但是当我执行第二个命令时,它显示正确,露丝是阿妮塔的主管。

+0

P.S.你在标识符周围使用反引号,而不是单引号。他们不是一回事。 –

+0

请不要关闭。这是一个有价值的问题,它显示了对加入概念的误解,对用户和其他人来说是一种有价值的学习体验。 –

回答

6

您不仅仅改变了连接条件的顺序,还改变了您选择的表格的列。结果是不同的,因为查询是不同的。

如果您翻转ss2SELECT与您翻转WHERE相同的方式,你会得到相同的结果。

这是你的两个查询与什么,但表的别名改变:

select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name' 
from staff_relation EMPLOYEE, staff_Relation SUPERVISOR 
where EMPLOYEE.staff_no = SUPERVISOR.supervisor 

select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name' 
from staff_relation EMPLOYEE, staff_Relation SUPERVISOR 
where EMPLOYEE.supervisor = SUPERVISOR.staff_no 

了解为什么#2为您提供了正确的结果,但#1,现在不?

+0

查询有什么不同?真的很抱歉,我不明白。我用更多的信息更新了它,希望它能以某种方式帮助你。 – iridescent

+0

我已经更新了我的答案,使其更加清晰。仔细看看WHERE条款。除了表别名的名称,我没有改变查询中的任何内容。 –

+0

感谢您的澄清。我想我终于明白了。稍后再重新消化。不知何故,我无法正确理解这个简单的概念大声笑。 – iridescent

相关问题