3
 CustID       Name         ReferredBy
 1         Neeta Sayam  
 2         Dolly Dilly         1
 3         Meena Kimi          2

他の人から紹介されたすべての顧客の名前を見つけます。

出力はドリーディリーとミーナキミでなければなりません。

クエリで他の人を参照している顧客を見つけることに成功しました

 SELECT c1.name FROM Customer c1 JOIN Customer c2 ON c1.custid=c2. ReferredBy
4

2 に答える 2

6

私が何かを逃していない限り:

SELECT *
FROM Customer
WHERE ReferredBy IS NOT NULL
于 2011-09-27T17:57:39.687 に答える
1

目的を達成する方法はたくさんありますが、興味深いのはCTEを使用することです。これにより、レベルごとに参照を取得できます。たとえば、レベル0はNeeta syam参照がなく、レベル1はとdolly dillyですmeena kimi。次のクエリが返さdolly dillyれます。これは、次のようにmeena kimi指定されたレベル1にあります。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;
于 2011-09-27T18:26:59.180 に答える