2012-01-31 72 views
1

我有一個SQL查詢的小問題。也許我還沒有醒來,有我的第二杯咖啡,但似乎仍然像我的大腦不能工作或找不到,它已經讓我的一天(早上)真的很糟糕。MySQL將所有記錄重複爲一條記錄

我想要做的是從2個表中重複計數記錄作爲1條記錄。可以說; 1.會員表 2.訂閱表。

我想找到有多少成員有活躍的訂閱。

SELECT COUNT(*) FROM members as main 
INNER JOIN subscriptions as sub ON sub.member_id = main.id 
WHERE 
sub.status = '2' AND sub.active = '1' 
GROUP BY main.id 

顯然不是這樣。一個成員可能有超過1個活躍的訂閱,所以我想將該成員計爲1個訂閱者(不管成員有多少活動訂閱)。

我打算爲會員訂閱創建一個新表,但這只是表格,我可能並不需要在這一點上。

任何建議將不勝感激。

回答

2

這應該做的伎倆:

SELECT COUNT(DISTINCT main.id) FROM members as main 
INNER JOIN subscriptions as sub ON sub.member_id = main.id 
WHERE sub.status = '2' AND sub.active = '1' 
+0

謝謝你,我寫的在標籤不同我不知道爲什麼我沒有嘗試一個。再次感謝你。 – Revenant 2012-01-31 10:50:46

2

建立您的查詢的最直接的方法是通過添加相關子查詢:你的SQL讀起來幾乎像英語:

SELECT COUNT(*) 
FROM members as main 
where exists (
    select 1 from subscriptions as sub 
    where sub.member_id = main.id and sub.status = '2' AND sub.active = '1' 
) 
+0

非常感謝您的幫助和時間dasblinkenlight。我接受了另一個答案,因爲它看起來很簡單,很乾淨。 – Revenant 2012-01-31 10:51:30