2017-03-14 36 views
1

我想知道是否有可能使這個查詢小是否有清潔這個SQL查詢的選項了

SELECT Templates.TempName 
     ,TimeSpans.TimeSpan 
     ,TemplateSlotTypes.[Type] 
     ,TemplateSlots.Potition 
     ,TemplateSlots.duration 
FROM TimeSpans 
INNER JOIN Templates ON Templates.TimeSpanId = TimeSpans.Id 
INNER JOIN TemplateSlots ON Templates.Id = TemplateSlots.TemplateId 
INNER JOIN TemplateSlotTypes ON TemplateSlots.[Type] = TemplateSlotTypes.Id 
+5

Mysql和sql server是完全不同的。請只標記相關的dbms。 – JohnHC

+2

使用表別名 –

+5

更小?就像少寫字母或更少的結果集行,或更快的執行? – jarlh

回答

1

看來你需要這個查詢的所有部分,所以沒有什麼可剛從查詢中刪除。 你可以,但是,使用表的別名來減少文字量:

SELECT t.TempName, tsp.TimeSpan, tst.[Type], ts.Potition, ts.duuration 
FROM TimeSpans tsp 
INNER JOIN Templates t ON t.TimeSpanId = tsp.Id 
INNER JOIN TemplateSlots ts ON t.Id = ts.TemplateId 
INNER JOIN TemplateSlotTypes tst ON ts.[Type] = tst.Id 
0

表的別名將使聯接更簡潔,但假設字段名稱是獨一無二的表涉及您無需前綴他們與表名。

SELECT TempName 
     ,TimeSpan 
     ,[Type] 
     ,Potition 
     ,duration 
FROM TimeSpans ts 
INNER JOIN Templates t ON t.TimeSpanId = ts.Id 
INNER JOIN TemplateSlots s ON t.Id = s.TemplateId 
INNER JOIN TemplateSlotTypes st ON s.[Type] = st.Id 

但是,我會建議使用一個很好的IDE進行SQL查詢開發,爲它執行連接並刪除大量的輸入。

從長遠來看,手動減少查詢中的文本數量是一種虛假的經濟。它實際上可能使SQL更難讀取,因此在將來修改或調試時會花費更多時間。