我有一個查詢用於抽取一些數據,但是當我加入另一個表時,它將爲其它表中已加入的每個記錄重複我的結果。TSQL select子句包含比需要更多的數據
我敢肯定這是一個簡單的問題,我忽略但似乎無法得到它。
我的查詢是在這裏:
SELECT A.[id],
A.[subject],
A.[description],
CONVERT(VARCHAR(17), A.[startTime], 100) as startTime,
CONVERT(VARCHAR(17), A.[endTime], 100) as endTime,
A.[whoCreated],
A.[center],
B.[FirstName],
B.[LastName],
B.[ntid] as empNTID,
C.[centerName],
D.[employee],
E.[segmentID]
FROM Focus_Meetings AS A
JOIN empTable as B
ON A.[whoCreated] = B.[empID]
JOIN Focus_Centers as C
ON A.[center] = C.[id]
JOIN Focus_Attendees as D
ON D.[meetingID] = A.[id]
JOIN Focus_Meetings_Segments as E
ON E.[meetingID] = A.[id]
WHERE
(CAST(A.startTime AS DATE) = CAST(COALESCE(@meetingDate, A.startTime) AS DATE) OR
CAST(A.endTime AS DATE) = CAST(COALESCE(@meetingDate, A.endTime) AS DATE) OR
(E.[segmentID] IN(SELECT ParamValues.x2.value('segment[1]', 'INT')
FROM @meetingSegment.nodes('/segments/theSegment') AS ParamValues(x2))
)
)
FOR XML PATH ('details'), TYPE, ELEMENTS, ROOT ('root');
有1個紀錄在Focus_Meetings
表和5個記錄在Focus_Meetings_Segments
。
我的結果應該只是一次會議,但它會給出每個D.[employee]
和E.[segmentID]
的記錄。
我想這就是它應該如何處理我的查詢,但這不是我的意圖。
有附加到會議中Focus_Meetings_Segments
5段,當我搜索他們中的一個,它應該只通過展示我開會1次,一次也沒有爲每個段。
我想了解這個信息,所以我很抱歉,如果我的問題太明顯了。 「Focus_Meetings_Segments」表格包含'meetingID'和'segmentID'。我得到'E. [segmentID]'的原因是因爲在我的where子句中,我正在檢查提供的segmentID是否在該表中。也許有更好的方法來做到這一點? – SBB
您不需要選擇一列以便在您的'WHERE'子句中使用它。另外 - 我指的是你的第一個select語句,而不是你的'WHERE ... IN'子句中的那個。 –
好的,我會盡力從你的回覆中找出答案。這是我的表的圖片,如果它有幫助http://oi59.tinypic.com/2vwtvdx.jpg – SBB