0
我有一個成員表,它具有各種其他表的外鍵。我正在檢查這些表中的每一個,看看一個成員是否有一個或多個記錄,如果他們返回一個值,如果不是,我返回0,這是全部選中的。除了在一個地方,這主要是工作。我需要檢查兩個表,如果其中任何一箇中有記錄,則查詢將返回5.0,否則返回。我正在嘗試使用UNION的SUM計數,但是我沒有得到我期望的結果,似乎只有兩個表中每個表中的第一條記錄被選中,就是這樣。在相關子查詢中求和計數的聯合
我正在使用(在一些幫助後)一系列與COUNT()和IF()相關的查詢來獲得總數。以下是查詢的一部分的樣子:
SELECT
member_id,
(SELECT IF(COUNT(member_id)>0,10,0) FROM tbl1 WHERE member_id = m.member_id)
+
(SELECT IF(SUM(tbl_count) > 0,5,0) FROM
(
SELECT member_id, COUNT(tbl2.id) as tbl_count
FROM tbl2
UNION ALL
SELECT member_id, COUNT(tbl3.id) as tbl_count
FROM tbl3
) sub WHERE sub.member_id = m.member_id
)
as total
FROM members m
的實際查詢加入另外10頁左右的表,再次不工作是COUNT與聯盟SUM的唯一部分。任何人都可以建議我應該怎麼做?任何幫助將非常感激。非常感謝你。
嗨,謝謝你的迴應。這是我原來的,但我得到了錯誤「未知的列'm.member_id'在'where子句'」。我相信這是因爲帶有UNION的子查詢無法從子查詢中訪問別名表m。我仍然試圖通過這個工作,任何更多的意見,將不勝感激。 – TheMethod
@TheMethod檢查第二次嘗試。我想基本上你會錯過你試圖的'group by'。 – DavidEG
是的,謝謝你做到了!非常感謝您的時間和專業知識。當我獲得足夠的積分投票時,我一定會迴圈並且這樣做。再次感謝你。 – TheMethod