左加入SubSonic问题

时间:2009-10-14 07:04:55

标签: join subsonic

我是SubSonic的初学者,我使用的是2.1版本。我想在此查询中执行左连接。查询如下所示:

select ... 
from tableA
left join tableB on tableA.Cola=tableB.Colb and tableB.Colc='some value'

我想知道如何执行and tableB.Colc='some value'条件。我试过这样的事情:

new SubSonic.Select().From("tableA").LeftOuterJoin
("tableB","Colb","tableA","Cola").AndExpression("Colc").IsEqualTo("some value")

但生成的语句不是我想要的。

2 个答案:

答案 0 :(得分:1)

这可能不是您想要的,但在亚音速中执行此类操作的最佳方法是使用视图,因此将select创建为视图,然后在代码中使用视图对象。在3+中,linq使你很容易完成你正在尝试的事情

答案 1 :(得分:0)

在我看来,你的查询和部分查询应该是where条件(你试图根据tableB.Colc的值等于'some value'来过滤你的结果)。所以我认为你的SQL查询应该是:

select ... 
  from tableA left join tableB on tableA.Cola=tableB.Colb 
  where tableB.Colc='some value' or tableB.Colc is null

如果是这种情况,那么在SubSonic中你会这样做:

new SubSonic.Select()
   .From("tableA").LeftOuterJoin ("tableB","Colb","tableA","Cola")
   .Where("Colc").IsEqualTo("some value")
   .Or("Colc").IsNull()
相关问题