2011-02-16 87 views
0

我有兩個表這樣子查詢問題

會員和他們的購買

我需要這樣的

Member_ID | CountofProducts 

輸出(和產品價值,不應該是0和採購狀態= 1)

SELECT  
    MemberName, 
    (SELECT COUNT(*) AS Count 
    FROM dbo.Purchases 
    WHERE MemberName = dbo.Members.MemberName 
     AND Res_Status = 1) AS Count 
FROM 
    dbo.Members 

我可以得到從上述查詢它們的總CountofPurchased Products但我孃家d要避免他們的count=0該怎麼辦?

回答

4

你可以嘗試像

SELECT m.MemberName, 
     COUNT(p.*) Cnt 
FROM Members m INNER JOIN 
     Purchases p  ON m.MemberName = p.MemberName 
WHERE p.Res_Status = 1 
GROUP BY m.MemberName 

沒有必要爲HAVING條款,如INNER JOIN將排除那些沒有購買會員的所有條目。

1
SELECT m.MemberName, COUNT(p.*) AS CountOfProducts 
FROM  Members m 
INNER JOIN Purchases p ON m.MemberName = p.MemberName 
WHERE p.Res_Status = 1 
GROUP BY m.MemberName 
HAVING COUNT(p.*) > 0 

我覺得上面會有點做你想做的。關鍵是你可能甚至不需要你的子查詢,而是你可以使用連接來處理查詢(可能效率更高)。