我是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")
但生成的语句不是我想要的。
答案 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()