在子表包含日期时间列的父子表方案中,我只选择那些仅在提供的日期范围内具有子记录的父记录。
e.g。购物车 - 购物车详细信息购物车详细信息有“DateAdded”列,我想选择本周只有“添加日期”的所有购物车记录。
类似的东西:
SELECT *
FROM Cart
JOIN CartDetail ON CartDetail.CartId = Cart.Id
???
我不确定如何选择CartDetail.DateAdded仅在提供的日期范围内的购物车记录。
答案 0 :(得分:0)
您可以使用NOT EXISTS
:
SELECT *
FROM Cart AS c
INNER JOIN CartDetail AS cd ON cd.CartId = c.Id
WHERE cd.DateAdded BETWEEN @start_date AND @end_date
AND
NOT EXISTS (SELECT 1
FROM CartDetail AS cd2
WHERE cd2.CartId = c.Id AND
cd2.DateAdded < @start_date OR cd2.DateAdded > @end_date)