【问题标题】:LINQ Right JoinLINQ 右连接
【发布时间】:2021-02-11 08:23:48
【问题描述】:

我已经检查了堆栈溢出中的所有论坛,但由于某种原因,我找不到简单的 SQL 连接的解决方案,这在 LinQ 中对我来说几乎是不可能的,但可能我误解了。

我有 3 个表,sql 连接如下所示:

school: name, id
class:  name, id
chair:  name, id

要做: table [class] 和 [chair] 总是硬连接 当班级和椅子不存在时,桌子[学校]也总是需要在那里

Select school.name, class.name, chair.name 
from school 
right outer join class on class.id = school.id
join chair on chair.id = class.id

在我看来,使用 {groupjoin} 和 {join} 的组合不起作用

【问题讨论】:

  • 您所描述的(“表 [学校] 总是需要在那里”)需要左外连接。但是,如果您使用的是实体框架之类的东西,您应该将注意力从将 SQL 转换为 LINQ 上移开。相反,使用导航属性,EF 将找出正确的连接类型。

标签: mysql sql linq lambda right-join


【解决方案1】:

当班级和椅子不存在时,桌子[学校]也总是需要在那里

这意味着您需要school LEFT JOIN (class, chair)(class, chair) RIGHT JOIN school

即要么

SELECT school.name, class.name, chair.name 
FROM school 
LEFT JOIN (      class 
            JOIN chair ON chair.id = class.id) ON class.id = school.id

SELECT school.name, class.name, chair.name
FROM class 
JOIN chair ON chair.id = class.id
RIGHT JOIN school ON class.id = school.id

Modelling fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多