【发布时间】:2011-12-14 17:50:01
【问题描述】:
我有两张桌子。父表有一个日期列,子表有 2 个日期列(从/到)。我需要从父级到子级进行左连接,其中父级的日期列在子级之间。在 sql 中,这看起来像这样:
select p.cob, count(*) from parent p
left join child c on p.cob between c.effective and c.expiry
group by p.cob
如何在 linq 中编写这个 - 我有点卡在这里....
【问题讨论】:
-
这个查询会很糟糕。
-
@BrianHoover - 为什么是
VERY bad?这是时变关系的正常结构。 -
@Dems 因为它会给孩子和父母之间的笛卡尔连接。
-
@BrianHoover - 只有部分笛卡尔积。如果 p.cob 的范围延伸多年,但 c.effective 和 c.expiry 的平均跨度为数周或数月怎么办?这也是检查父母中每条记录有多少子关系的唯一方法。根据数据的不同,它可能是密集的,但它肯定不是错误的。