0
我正在進行動態查詢,我有點不確定如何完成此任務。這似乎是一些常見的東西,所以我會將其用作學習體驗。TSQL查詢內部從外部選擇條款
我的結構有幾個表。我在這個例子中包含了其中的一些,因爲一旦我可以獲得基本查詢,我可以添加到它。
在我最後的查詢中,WHERE
子句將會動態生成。
這裏是我的結構的小提琴:http://sqlfiddle.com/#!6/2b104
在內部選擇c.
你會發現我有一個名爲localeID
列。我需要能夠在我的外部WHERE
子句中查詢。
例如,該localeID將鏈接到localeCodes
表,並從那裏,我有另一個表locations
。最終結果將是「向我展示我在北美的一切」。那麼,我們知道localeID
8 =猶他州和猶他州在北美(當加入地點表)。
下面是該查詢與OP保持:
SELECT a.[trainingEventID],
a.[teTitle],
a.[teSource],
a.[teType],
a.[teMedium],
a.[teFlag],
a.[teCreator],
a.[teCreated],
a.[tePOC],
a.[teDirector],
a.[teTeammateImpact],
a.[teCustomerImpact],
a.[teComplexity],
a.[intID],
a.[teNeededBy],
a.[approver],
a.[approvalDate],
(SELECT b.[trainingEventID],
b.[segmentDate],
b.[nonProdHrs],
(SELECT c.[segmentID],
c.[localeID],
c.[teammateCount],
c.[leaderCount]
FROM BS_TrainingEvent_SegmentDetails AS c
WHERE c.[segmentID] = b.teSegmentID
FOR XML PATH ('detail'), TYPE, ELEMENTS, ROOT ('details'))
FROM BS_TrainingEvent_Segments AS b
WHERE b.trainingEventID = a.[trainingEventID]
FOR XML PATH ('segment'), TYPE, ELEMENTS, ROOT ('segments'))
FROM BS_TrainingEvents AS a
--WHERE c.[localeID] = '8'
FOR XML PATH ('event'), TYPE, ELEMENTS, ROOT ('events');
這看起來很有希望。可悲的是,我從來沒有想過做內部選擇,同時也加入了相同的數據,但這證明是一個很好的用例。它與我的小提琴一起工作,所以它是一個可以接受的答案:)我試着把它放到我的製作過程中,讓你知道它的價值。你在第二個內部連接上有一個錯字,應該是'tesd.'而不是'tesd =' – SBB 2014-11-24 15:54:03
謝謝,我修復了這個問題。 – 2014-11-24 16:05:17
所以這裏是我遇到的問題。這發生在我自己的方法上,所以我可能一直在正確的軌道上,但現在回到這.. http://sqlfiddle.com/#!6/661f8/1。 trainingEvent可以包含多個段,每個段可以包含多個segmentDetails。此數據需要按分段分組,因爲此時它將每個分段的每個事件複製一次。它需要是培訓活動 - >細分(分組) - >細分細節。這有意義嗎?如果你看小提琴,你會注意到重複的數據,並希望我想要做什麼 – SBB 2014-11-24 16:52:31