我有一个自引用表(Customers)和一个将链接到该表(Companies)中一条记录的表,即
Customers Companies
********* *********
ID ID
ManagerID --> DirectorIDManagerID引用了Customer表中的另一条记录。
我需要执行一个查询,通过给定一个特定的客户ID,它将找到该客户所属的公司。如果我用C#来做这件事,它看起来会像这样(这是示例代码,不是函数式的):
public static Company FindCompany(Customer customer)
{
while (customer.ManagerID != null)
{
customer = customer.GetManager();
}
return Company.FindByDirector(customer.ID);
}所以有两个步骤:
1)遍历Customer表(通过ManagerID),直到找到没有ManagerID的客户。(署长)
2)查找与该客户相关的公司。
有人能帮我吗?
谢谢。
发布于 2009-08-30 11:44:45
像这样的东西,虽然没有经过测试。
基于CTEs的Recursive Queries Using Common Table Expressions
WITH cTE AS
(
SELECT --Get manager of given customer
ManagerID
FROM
Customers
WHERE
ID = @MyCustomerID
UNION ALL
SELECT --Get manager of the manager etc
Customers.ManagerID
FROM
cTE
JOIN
Customers ON cTE.ManagerID = Customers.ID
)
SELECT
*
FROM
cTE
JOIN
Company ON cTE.ManagerID = Company.DirectorIDhttps://stackoverflow.com/questions/1353651
复制相似问题