2011-11-22 25 views
2

我會盡我所能解釋清楚。我試圖完成兩件事,但即使首先正確工作,也遇到了麻煩。Mysql - 總結多個連接表的數量

我有一個成員表具有多個表的外鍵的架構。最後,我將從大約10張表中抽取,這些表可能會或可能沒有特定成員的記錄。我正在努力獲得所有計數的總和。我的查詢如下所示:

SELECT (COUNT(tb1.member_id) + COUNT(tb2.member_id)) as total 
FROM members m 
LEFT JOIN table_1 tb1 ON tb1.member_id = m.member_id 
LEFT JOIN table_2 tb2 ON tb2.member_id = m.member_id 
WHERE m.member_id = 27 

其中,27是我正在使用的測試帳戶的member_id。這不會產生準確的結果,我相信這是因爲左連接,它似乎在丟掉東西,即使每種記錄只有兩種,我也總共得到8個。如果我消除了其中一個左連接,那麼我會得到預期的結果。

有誰能告訴我應該怎麼做?

這是我的問題的一部分。第二個問題是,在其中一些情況下,我希望每個結果都計爲1或0,即使有2或3個相應的記錄。我正在尋找類似bool的結果,但沒有找到任何東西。任何人都可以提出一種方法來做到這一點

非常感謝您的閱讀,任何建議將非常感激。這可能是我以錯誤的方式接近這個問題,再次表示讚賞。

回答

1

Eventhough我不熟悉藝術的mysql的狀態我敢肯定這樣的事會工作:

SELECT 
(select COUNT(*) from table_1 = where member_id = m.member_id) 
+ 
(select COUNT(*) from table_2 = where member_id = m.member_id) 
as total 

FROM members m 
WHERE m.member_id = 27 
+0

關於你的問題,你可以使用條件語句直接在SELECT子句中第二部分[HTTP:/ /vikrant_labde.blogspot.com/2005/02/mysql-ifnull-if-case-when-then-else.html],以便您檢查是否count> 0 –

+0

非常感謝您,這正是我一直在尋找的。對於我選擇的布爾類型選項,我最終做了: – TheMethod

+0

很高興提供幫助。爲了將來的參考,這種查詢稱爲「相關子查詢」。順便說一句。請將問題設置爲已回答,謝謝 –