2011-02-16 64 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 

我觉得上面会有点做你想做的。关键是你可能甚至不需要你的子查询,而是你可以使用连接来处理查询(可能效率更高)。