我想复制
Select
...
From Mistress Mi
Left Outer Join Dog D On Mi.ID = C.MistressID
And D.MasterID =
( Select Ma2.ID From Master Ma2 Where
D.MasterID = Ma2.ID
And Ma2.Status = 42 )
Left Outer Join Master Ma On
D.MasterID = Master.ID
And Ma.Status = 42
这意味着:
不管有没有狗,都给我所有的情妇
给我所有有状态的大师
以及与所述大师和女主人相关的所有狗。
这可能只会导致情妇 但是,如果我们有一只狗,我们确信它的主人有身份。
连接中的子选择使我望而却步
我使用WithSubQuery
的所有尝试都会将子选择添加到最终的Where子句中(而不是我想要的Join部分内)。
甚至可以使用NHibernate / QueryOver吗?
答案 0 :(得分:2)
这应该是可能的。当我们执行var list = session
.QueryOver<Job>()
.JoinAlias(x => x.tags // relation
, () => jobTag, // alias
, JoinType.LeftOuterJoin // type
, Subqueries.WhereProperty(() => jobTag.name).In(subquery) // here
)
.List();
(JOIN语句)时,我们可以传递第4个参数,所谓的with子句。在这个Q&amp;答:
我们可以看到一个例子
ON
将第4个参数添加到AND
cluase int grid = 20;
long paths = 1;
for (int i = 0; i < grid; i++)
{
paths *= (grid * 2) - (grid + i)
paths /= (i + 1);
}
Console.WriteLine(paths);
Console.ReadKey();
(它可能会限制更多现有关系条件)