【发布时间】:2018-01-26 13:50:34
【问题描述】:
在我们构建新版本时,我正在寻找一种快速解决方法来解决旧系统的问题。
概述
清单页面检查数据库中每个用户的一定数量的条目。然后页面根据登录的用户类型检查每个引用表的 count 条目,该引用表包含 必需 条目数(“RequiredRows”)。然后页面迭代用户的RequiredRows 的条目。
问题
当返回的条目数小于RequiredRows 时,显然会失败。
很明显
我知道你们中的大多数人,就像我一样,会说更新页面以不以这种方式进行迭代。不幸的是,目前这是不可能的,而且如果不详细说明,总体上要复杂得多。
我需要什么
我需要一个可以根据RequiredCount 返回相同数量或更多记录的查询。
这是一个例子:
- User1 以公共用户身份登录
- User2 以私人用户身份登录
- 公众用户需提交3个参赛作品
- 私人用户需提交 2 个条目
场景
- 如果 User1 有 0 个条目,则查询应该什么也不返回,没有行。
- 如果 User1 有 1 个条目,则查询应返回 1 行数据,2 行
NULL。 - 如果 User1 有 2 个条目,则查询应返回 2 行数据和 1 行
NULL。 - 如果 User1 有 3 个条目,则查询应返回 3 行数据。
- 如果 User2 有 0 个条目,则查询不应返回任何内容,不返回任何行。
- 如果 User2 有 1 个条目,则查询应返回 1 行数据和 1 行
NULL。 - 如果 User2 有 2 个条目,则查询应返回 2 行数据。
- 如果 User2 有 3 个条目,则查询应返回 3 行数据。
数据库结构
Id User Type
-------------------
1 User1 1
2 User2 2
Id UserType RequiredRows
--------------------------------
1 Public 3
2 Private 2
Id UserId Entry
----------------------
1 1 Test
期望的结果
当查询 User1 的条目数时,我需要以下结果。
EntryId
--------
1
null
null
查询User2时:
EntryId
--------
null
null
注意事项
虽然这只是一个小样本数据,但所需条目的数量在 0-50 之间变化,具体取决于不同的用户类型。
【问题讨论】:
-
使用
IF和UNION获得您需要的结果。 -
@Sami 谢谢。我试图弄清楚这一点。不知道如何在我的场景中使用
UNION。您可以提供的任何小代码都会有所帮助。同时我也会搜索。 -
是否有超过 2 个用户?还是只有那两个?
-
@Sami 还有很多,这只是一个小样本
-
这是一个数据库问题。参考(和定义)表格(不是页面)。
标签: sql sql-server tsql