0

我可以找到与我类似的问题和答案,但我似乎无法解释......

我正在尝试为 ac# winforms 应用程序获取一些数据。我希望将其作为我可以使用 linqtosql 访问的数据库中的视图。我只是不知道该怎么做。我意识到我可以使用循环来构建我想要使用 C# 的表,但希望单个查询可以更有效地实现相同的目标。

我有三个包含以下字段的表:

  1. 周表
    周(整数)

  2. UserTable
    用户(字符串)
    开始周(整数)

  3. 提交表
    用户(字符串)
    周(整数)
    状态(字符串)

我想要一个查询,根据 SubmissionTable 检查每个用户,查找每周大于或等于其开始周的条目。

对于为该用户检查的每周,如果提交表中没有条目,或者提交表中的条目状态为“未完成”,我希望查询返回用户名和缺少的星期。我基本上是在查询结果列出所有丢失或不完整的条目之后。

例如:
WeekTable 包含 5 条记录,1-5
UserTable 包含 2 条记录“User A”开始周为 2,“User B”开始周为 5 SubmissionTable 包含 3 条记录:
User A, 2, Complete
User A、3、不完整
用户 A, 5, 完整

用户 A 缺少第 1 周的条目,但可以忽略,因为他们的开始周是第 2 周,他们也缺少第 4 周的条目,并且他们为第 3 周提交的条目不完整。用户 B 从第 5 周开始,所以应该有一个条目,但它不见了。

我想要的查询结果如下:
User A, 3
User A, 4
User B, 5

任何人都可以帮助我吗?

4

1 回答 1

0

您需要做两件事 - 构建周数和用户的组合,并检查缺失值

select uw.* from 
    (
        select [user], [week]
        from users
            inner join weeks on users.startweek<=weeks.[week]
    ) uw
        left join 
    submissions
        on uw.[user]= submissions.[user]
        and uw.[week] = submissions.[week]
        and submissions.[status]='complete'
where submissions.[user] is null

我不是寻找不完整或缺失的,而是寻找完整的,并排除它们。

于 2013-09-05T10:39:07.073 回答