带有两个具有引用键的表的SQL查询

时间:2012-08-04 14:41:16

标签: sql isqlquery

我有两张桌子:

Discounts(disid primary key)

Cust(custid primary key, disid ref discount(disid))

现在我需要一个查询来获取custid所有disid(折扣优惠券),并且客户可能会多次包含相同的disid

3 个答案:

答案 0 :(得分:1)

select custid, count(distinct disid) from cust
group by custid
having count(*) = (select count(*) from discounts)

答案 1 :(得分:1)

SELECT COUNT(DISTINCT D.disid) FROM CUST C 
INNER JOIN DISCOUNTS D ON D.disid=C.disid GROUP BY D.disid

答案 2 :(得分:1)

尝试以下任一解决方案:

SELECT  a.custid, COUNT(a.disid) totalCoupon
FROM    cust a  
            INNER JOIN discounts b 
                ON b.disid = a.disid 
GROUP BY a.custid

SELECT  a.custid, COUNT(a.disid) totalCoupon
FROM    cust a  
            INNER JOIN discounts b 
                ON b.disid = a.disid 
GROUP BY a.custid
HAVING   COUNT(a.disid) > 1 -- customers having the same (but more than 1) 
                            -- CouponID will only be shown here