2016-08-12 76 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傑森加倍我提及。