在LINQ的右表中最多包含一行的左连接

用户名

朋友,我有一个客户表和一个关系表,用于保存向其发送调查链接的客户。同一份调查可能已多次发送给同一位客户。或者,某些客户可能没有发送任何调查链接。我的目标是将所有客户带一次,如果向其中一些客户发送了问卷,我只想带一个创建日期最大的客户。记录数必须等于客户数。我写了查询,但是很难翻译linq或。你能帮我吗。

这是我写的查询

SELECT *
FROM dbo.Customer c
 LEFT JOIN dbo.SurveyCustomers sc ON sc.SurveyCustomerId =
(
SELECT A.SurveyCustomerId
FROM
(
    SELECT TOP 1 *
    FROM dbo.SurveyCustomers sc1
    WHERE sc1.STATUS = 1
          AND sc1.IsActive = 1
          AND sc1.CustomerId = c.CustomerId
          AND sc1.SurveyId = 1207
          AND sc1.STATUS = 1
          AND sc1.IsActive = 1
    ORDER BY sc1.CreatedDate DESC
) A
)
WHERE c.IsActive = 1
  AND c.STATUS = 1;

客户表

CREATE TABLE [dbo].[Customer](
[CustomerId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CustomerTitle] [varchar](500) NOT NULL,
[CustomerEmail] [varchar](500) NOT NULL,
[CreatedDate] [datetime] NOT NULL,
[UpdatedDate] [datetime] NOT NULL,
[IsActive] [bit] NOT NULL,
[Status] [bit] NOT NULL)

SurveyCustomer

CREATE TABLE [dbo].[SurveyCustomers](
[SurveyCustomerId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[SurveyId] [int] NOT NULL FOREIGN KEY,
[CustomerId] [int] NOT NULL FOREIGN KEY,
[GuidId] [varchar](500) NOT NULL,
[CreatedDate] [datetime] NOT NULL,
[UpdatedDate] [datetime] NOT NULL,
[Status] [bit] NOT NULL,
[IsActive] [bit] NOT NULL)
塞尔坎·阿尔斯兰

您可以OUTER APPLY用来获得相同的结果。

SELECT *
FROM dbo.Customer c
 OUTER APPLY 
(
    SELECT TOP 1 *
    FROM dbo.SurveyCustomers sc1
    WHERE sc1.STATUS = 1
          AND sc1.IsActive = 1
          AND sc1.CustomerId = c.CustomerId
          AND sc1.SurveyId = 1207
    ORDER BY sc1.CreatedDate DESC
) A
WHERE c.IsActive = 1
  AND c.STATUS = 1;

和linq等效:

Customers.SelectMany(c => SurveyCustomers
                        .Where(sc1 => 
                            sc1.Status == true 
                            && sc1.IsActive == true
                            && sc1.CustomerId == c.CustomerId
                            && sc1.SurveyId == 1207 )
                        .OrderByDescending(sc1 => sc1.CreatedDate)
                        .Take(1).DefaultIfEmpty(), 
                    (c, sc) => new { c, sc })
.ToList()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将单列的行连接到一行中最多4列?

来自分类Dev

LINQ选择一行最多包含一列而另一列不同的列

来自分类Dev

仅当右表为空时,LEFT JOIN才从左表返回第一行

来自分类Dev

Mysql左连接与一行

来自分类Dev

如果左连接表中的行为空,则使用另一行

来自分类Dev

LINQ右连接和左连接

来自分类Dev

MYSQL:左仅连接第一行或选择不同

来自分类Dev

MySQL左连接限制为一行

来自分类Dev

MySQL左连接限制为一行

来自分类Dev

在一行中左连接两个值

来自分类Dev

MySQL 左连接返回只返回一行

来自分类Dev

显示带有左外连接的最后一行

来自分类Dev

如何在一行中左连接两个表(oracle 11g 或标准 sql)

来自分类Dev

查询联接两个列,每位留下一行与具有右表中的数组refrenced至左表行列

来自分类Dev

如何从表中选择每一行,按连接表中最近的“最近(时间戳)”关联行对它们进行排序?

来自分类Dev

MYSQL返回右表中的一行

来自分类Dev

左连接与右表中的位置

来自分类Dev

Mysql左连接,条件在右表中

来自分类Dev

SQL 左连接 - 右表中的多行

来自分类Dev

从右表条件获取左表行

来自分类Dev

在右表的非唯一列上左连接两个表

来自分类Dev

mysql左连接/右连接3个表

来自分类Dev

隐藏数据表中最后一行的按钮 - JQuery

来自分类Dev

MySQL连接表结果为一行

来自分类Dev

LINQ左连接在最后以空的右项目排序

来自分类Dev

在包含日期范围行的表中,每一行每天产生一行,其中包含小时数

来自分类Dev

父级中的两个div(左,右),宽度固定的右,左填充可用空间,都在同一行中。(无相对/绝对位置)

来自分类Dev

隐藏左连接列上除第一行以外的所有数据

来自分类Dev

MySQL 连接 - 表 A 的所有行都应与表 B 的每一行连接

Related 相关文章

  1. 1

    如何将单列的行连接到一行中最多4列?

  2. 2

    LINQ选择一行最多包含一列而另一列不同的列

  3. 3

    仅当右表为空时,LEFT JOIN才从左表返回第一行

  4. 4

    Mysql左连接与一行

  5. 5

    如果左连接表中的行为空,则使用另一行

  6. 6

    LINQ右连接和左连接

  7. 7

    MYSQL:左仅连接第一行或选择不同

  8. 8

    MySQL左连接限制为一行

  9. 9

    MySQL左连接限制为一行

  10. 10

    在一行中左连接两个值

  11. 11

    MySQL 左连接返回只返回一行

  12. 12

    显示带有左外连接的最后一行

  13. 13

    如何在一行中左连接两个表(oracle 11g 或标准 sql)

  14. 14

    查询联接两个列,每位留下一行与具有右表中的数组refrenced至左表行列

  15. 15

    如何从表中选择每一行,按连接表中最近的“最近(时间戳)”关联行对它们进行排序?

  16. 16

    MYSQL返回右表中的一行

  17. 17

    左连接与右表中的位置

  18. 18

    Mysql左连接,条件在右表中

  19. 19

    SQL 左连接 - 右表中的多行

  20. 20

    从右表条件获取左表行

  21. 21

    在右表的非唯一列上左连接两个表

  22. 22

    mysql左连接/右连接3个表

  23. 23

    隐藏数据表中最后一行的按钮 - JQuery

  24. 24

    MySQL连接表结果为一行

  25. 25

    LINQ左连接在最后以空的右项目排序

  26. 26

    在包含日期范围行的表中,每一行每天产生一行,其中包含小时数

  27. 27

    父级中的两个div(左,右),宽度固定的右,左填充可用空间,都在同一行中。(无相对/绝对位置)

  28. 28

    隐藏左连接列上除第一行以外的所有数据

  29. 29

    MySQL 连接 - 表 A 的所有行都应与表 B 的每一行连接

热门标签

归档