CustID Name ReferredBy
1 Neeta Sayam
2 Dolly Dilly 1
3 Meena Kimi 2
查找其他人介紹的所有客戶的姓名。自己加入表格
輸出應該是dolly dilly和meena kimi。
我已成功發現了誰已經通過查詢
SELECT c1.name FROM Customer c1 JOIN Customer c2 ON c1.custid=c2. ReferredBy
CustID Name ReferredBy
1 Neeta Sayam
2 Dolly Dilly 1
3 Meena Kimi 2
查找其他人介紹的所有客戶的姓名。自己加入表格
輸出應該是dolly dilly和meena kimi。
我已成功發現了誰已經通過查詢
SELECT c1.name FROM Customer c1 JOIN Customer c2 ON c1.custid=c2. ReferredBy
reffred人除非我失去了一些東西的客戶:
SELECT *
FROM Customer
WHERE ReferredBy IS NOT NULL
我認爲OP的意思是創建'CustID'和'ReferredBy'之間的關係。 – 2011-09-28 00:51:08
@ Surfer513 - 這不是他所說的,這與他的理想輸出相符。 – JNK
有很多的方式來實現你想要什麼,但有趣的是使用CTE,因爲它允許您按級別獲取參考,例如在您的案例級別零將是Neeta syam
,沒有參考,一級是dolly dilly
和meena kimi
。下面的查詢將返回dolly dilly
和meena kimi
這是一個由where reference = 1
像這樣指定的級別:
WITH CTEs (Id, CustomerName, Reference, RefCustomer)
AS
(
SELECT
Id,
Name,
0 As Reference,
CONVERT(VARCHAR(length), 'No Reference') AS RefCustomer
FROM Customers
WHERE ReferredBy IS NULL
UNION ALL
SELECT
c.CustId,
c.Name,
cs.Reference + 1,
cs.CustomerName
FROM Customers c
INNER JOIN Ctes cs ON c.ReferedBy = cs.Id
)
SELECT CustomerName, RefCustomer
FROM Ctes
WHERE Reference = 1;
請澄清你的預期輸出。 – JNK