我有一个处理针对资源的预订的数据库。我正在使用SSRS 2008 r2
。我确保可视化设计器中的所有连接都显示RESOURCES
表上的所有行。
如何返回RESOURCES
表中的所有行,而不管其他连接表中的数据是什么?我正在使用带有开始日期和结束日期参数的WHERE
子句。这些参数引用reservations
表上的日期。如果我从WHERE
子句中删除它,我会得到所有RESOURCES
。但是我需要包含开始日期和结束日期,以便我可以在两个日期之间进行搜索。我想如果我在resources
表上留下了外连接,我就会获得所有资源。但是,仅在开始日期和结束日期之间获取具有相关预留的资源。
我做错了什么?
SELECT
(这里有行)
FROM
_ReservationsAttributes
RIGHT OUTER JOIN
_Reservations ON _ReservationsAttributes.ReservationId = _Reservations.ReservationId
RIGHT OUTER JOIN
_Resources ON _Reservations.ResourceId = _Resources.ResourceId
LEFT OUTER JOIN
_LocationsAttributes ON _Resources.LocationId = _LocationsAttributes.LocationId
LEFT OUTER JOIN
_Locations ON _Resources.LocationId = _Locations.LocationId
LEFT OUTER JOIN
_ResourcesAttributes ON _Resources.ResourceId = _ResourcesAttributes.ResourceId
WHERE
(_LocationsAttributes.[@33] = @Distinct_Premise) AND
(_Reservations.StartDate >= @Start_Date) AND
(_Reservations.EndDate <= DATEADD(DAY, 1, @End_Date))
ORDER BY
_Locations.OrderBy,
_Resources.Name
答案 0 :(得分:0)
解构您的查询。从仅中央表(_Resources)开始。使用WHERE
条件一次添加其他每个表。在添加下一个表之前,请确保每个步骤都有意义。
我的猜测 - 您使用LEFT OUTER
和RIGHT OUTER
联接感到困惑。我们需要架构来确定。