【发布时间】:2011-08-24 01:19:33
【问题描述】:
这个问题与这里的问题接近但不一样: NHibernate Query across multiple tables
基本上,我的问题给出了以下模型,我将如何查询以找出当前狗的名字是“foo”还是过去的狗的名字是“foo”(析取)。 基本上我对 CurrentDog 有一个多对一关系,对 PastDogs 有一个多对多关系。
public class Dog {
public string name {get; set;}
}
public class Owner {
public string firstname {get; set;}
public string lastname {get; set;}
public Dog CurrentDog {get; set;}
public Dog[] PastDogs {get; set;}
}
我猜 SQL 应该是这样的:
SELECT o.* FROM owners AS o
INNER JOIN dogs AS cd ON o.current_dog_id = cd.id
INNER JOIN owner_past_dog_maps AS pd ON o.id = pd.owner_id
INNER JOIN dogs AS d ON pd.dog_id = d.id
WHERE d.name = 'foo'
OR cd.name = 'foo'
希望这是有道理的...如果有人问,我会尽力澄清。
【问题讨论】:
-
我想我可以把它放在一个新帖子中,但这个问题的扩展是我如何归还主人曾经拥有的所有狗,过去或现在?
标签: c# .net sql nhibernate