2016-08-12 73 views
-2

有人能解释这段代码给我吗?它输出每个演示者之间的差异(PNRFNAME)薪水(Salary_yearly)解释SQL Server代码

SELECT P2.PNRFNAME ,P1.PNRFNAME AS "pnrfname" , P2.SALARY_YEARLY - P1.SALARY_YEARLY AS "salary difference" 
FROM PRESENTERS P2 
JOIN PRESENTERS P1 
ON P2.PNRFNAME < P1.PNRFNAME 

ORDER BY P1.SALARY_YEARLY DESC

this are the results

这是它的表:

INSERT INTO PRESENTERS(PRESENTERID, PNRLNAME, PNRFNAME, AGE,YEARS, SALARY_YEARLY) 
VALUES 
+4

是什么TIFF作为谋生?如果他/她的工资是一年三千五百万美元,我想要那份工作。 – dfundako

+2

这个连接就是所谓的三角连接。表现可能具有挑战性,但在这种情况下,这似乎是所期望的。你可以在这里阅读更多关于三角形连接。 http://www.sqlservercentral.com/articles/T-SQL/61539/ –

回答

1

它将每个演示者映射到彼此的演示者,并告诉您他们的工资有多少不同。它使用自连接来相互映射主持人。

ON P2.PNRFNAME < P1.PNRFNAME连接条件是不同寻常的可能,但它的作品。也就是说携手确保您不会在单独的行获得VS的TIFF和TIFF对称的比较,例如杰森VS杰森。这是因为获得任何两个人的名字,他们两人都没有彼此相等,但其中只有一个是按照字母顺序的第一位。如果您使用的条款NOT P2.PNRFNAME = P1.PNRFNAME,你会得到贾森VS TIFF和TIFF文件VS杰森加倍我提及。