Sql-Server

查看設計器奇怪的連接語法

  • December 8, 2014

我有一個數據倉庫,其中包含 SSMS 視圖設計器內置的許多視圖。查看語法,這些FROM子句對我來說是難以理解的,因為這些ON語句沒有緊跟在相關的JOIN <table>. 通常查詢的主表是RIGHT連接的,並且在FROM. 所以我有這樣的情況:

SELECT *
FROM tableC
LEFT JOIN TableB
RIGHT JOIN TableA
ON TableA.ID = TableB.ID
ON TableB.TypeID = TableC.TypeID 
WHERE ....

將各種JOINON子句的順序更改為我手寫的內容會以意想不到的方式改變結果。似乎大多數 SQL 漂亮器都被這種醜陋的語法嗆住了,但 SSMS 卻沒有。我無法找到韻律、原因或文件來幫助解開正在發生的事情。

請有任何建議或連結來解決和修復視圖設計器查詢?

這只是刪除了可選括號的標準 SQL 連接語法:

SELECT *
FROM tableC
LEFT JOIN 
(
   TableB
   RIGHT JOIN TableA
       ON TableA.ID = TableB.ID
)
ON TableB.TypeID = TableC.TypeID

如果您不喜歡 SSMS 視圖設計器生成的語法(它有問題而且很少更新),只需使用正常 T-SQL 手動編寫視圖。

有些人將這種語法風格稱為“嵌套連接語法”。範例部落格文章

引用自:https://dba.stackexchange.com/questions/84580