有三个表T1, T2 and T3.
我希望sql查询返回具有以下条件的结果:
T1.Id is in T2.T1Id (T1.Id = T2.T1Id)
AND there is not a row in T3 with Id from T2 for a certain date in a field in T3
更新
以下示例是第一个表名 - >列名 - >示例数据
输入是日期
如果有TimeIntervalId的Break而不是带有输入日期的DeletedBreak,则返回一行。
如果IntervalId
没有中断,则不返回一行答案 0 :(得分:0)
我认为你在寻找的是:
DECLARE @Date datetime = CAST('2014-11-13' as datetime)
SELECT 1 Id
into #TimeIntervals
SELECT 1 Id, 1 TimeIntervalId
INTO #Breaks
SELECT 1 Id, 1 BreakId, CAST('2014-11-14' as datetime) as Date
into #DeletedBreaks
SELECT *
FROM #TimeIntervals ti
INNER JOIN #Breaks b on ti.Id = b.TimeIntervalId
LEFT JOIN #DeletedBreaks db on db.BreakId = b.Id AND Date = @Date
WHERE (db.Id is null)
DROP TABLE #TimeIntervals
DROP TABLE #Breaks
DROP TABLE #DeletedBreaks
内部很重要,因为它确保如果中断表中没有中断,则不返回任何行。
编辑:b。我将永远不为空,因此它已从where子句中删除。