晚上好,基于多对多筛选器选择
我有一个类似于下图的表格布局。 用户表正在存储我的大部分信息。对于每个用户,我也可以有一个不确定数量的首选项和位置选择,我将其存储在交汇表中,如图所示。
当管理员来产生一个报告,他们将使用偏好和位置的选择就像一个过滤器。例如,他们可以选择Preference1和Preference3以及UserLocation2和UserLocation4,报告应该只显示至少有一个偏好和至少一个位置的用户。是否有可能在一个SQL select语句中执行此操作?我正在使用SQL Server 2008 R2。
假设一个用户记录符合上述的返回条件,是否有办法显示所有的首选项和位置,并连接到一个新列中。我已经想出了如何为单个用户获取连接结果,但不知道它是否也可以作为同一个SQL select语句的一部分来完成。
这是我返回以逗号分隔的喜好,为个人用户名...
DECLARE @concatlist VARCHAR(MAX)
SELECT @concatlist = COALESCE(@concatlist+', ', '') + dbo.Preference.Title
FROM dbo.UserPreference
LEFT OUTER JOIN dbo.Preference
ON dbo.UserPreference.PreferenceID = dbo.Preference.PreferenceID
WHERE dbo.UserPreference.UserID = 5
SELECT @concatlist as OutputColumn
任何指针将是巨大的。我已经花了半天的时间在这方面,虽然我可以做到这一点,但无法在一个声明中找到办法。
感谢,
感谢埃里克 - 一些调整,这工作得很好,而不需要比较EXISTS语句中的特定偏好或位置。 – Simon