0
我有這個查詢,我需要從3個表中拉回數據,但有一些需要發生的分組。我知道子查詢是可怕的,但我似乎無法以其他方式完成此任務。有幾萬行時,這將會崩潰。也許我過於複雜了?我嘗試了「分區依據」,但是這將會撤回ERT1中的所有行,這會弄亂計數。我不能使用一個組,因爲如果我在ERT1上進行分組,它會搞砸ER1。從Select語句中刪除子查詢?
我在連接字段上使用FK和索引。
任何人有任何想法?
這將是非常感謝!這是非常酷 -
SELECT ER.EventRegistrationID, DC.DiscountCodeID, DC.DiscountAmount, DC.DiscountCode, DC.ActiveFlag,
ISNULL((SELECT COUNT(ER1.EventRegistrationID)
FROM T_EventRegistration ER1
WHERE ER1.DiscountCode = DC.DiscountCode
AND ER1.EventID = DC.EventID
AND ER1.OrderCompleteFlag = 1),0) AS NumTimesUsed, --includes refunded orders
ISNULL((SELECT COUNT(ERT1.TicketNumber)
FROM T_EventRegistrationTickets ERT1, T_EventRegistration ER1
WHERE ER1.EventRegistrationID = ERT1.EventRegistrationID
AND ER1.DiscountCode = DC.DiscountCode
AND ER1.EventID = DC.EventID
AND ER1.OrderCompleteFlag = 1
),0) AS NumTicketsSold --excludes refunded tickets
FROM T_DiscountCodes DC, T_EventRegistration ER
WHERE DC.DiscountCode *= ER.DiscountCode
AND DC.EventID = 20188
AND DC.DeleteFlag = 0
AND DC.HiddenFlag = 0
AND ER.OrderCompleteFlag = 1
ORDER BY DC.DiscountCode, NumTimesUsed
我還沒有看到這個功能之前做到這一點。我認爲這比子查詢快得多?這是真的表現相同的概念,因此我問。謝謝! – Dennis 2014-12-01 19:54:50
我不知道它對你的查詢有多大幫助,幾天前瞭解它。你應該檢查這個談話https://www.youtube.com/watch?v=-m426WYclz8 – Hatsjoem 2014-12-01 19:56:47
這是一個很好的視頻。感謝分享!這似乎快得多。我投入我的生產服務器 - 讓我們看看它的表現!再次感謝 – Dennis 2014-12-01 20:12:49