我正在顛覆我的頭(似乎是相當)簡單的解決方案,但無法讓它工作。獲取和計算來自3個不相關的mysql表的數據
我有3個不同的表我需要從中獲取信息。他們可以與id列相關聯。我想要做的是:
檢查多次ID如何顯示在表1和SUM()作爲SUM1
檢查相應table1.data領域的所有值多少次ID出現在表2和SUM()作爲SUM2
查身份證多少次出現在相應table2.data領域的所有值表3和SUM()作爲SUM3
我可以使用3個不同的查詢來解決這個問題,但真的很希望有一個MySQL查詢返回結果。
我正在顛覆我的頭(似乎是相當)簡單的解決方案,但無法讓它工作。獲取和計算來自3個不相關的mysql表的數據
我有3個不同的表我需要從中獲取信息。他們可以與id列相關聯。我想要做的是:
檢查多次ID如何顯示在表1和SUM()作爲SUM1
檢查相應table1.data領域的所有值多少次ID出現在表2和SUM()作爲SUM2
查身份證多少次出現在相應table2.data領域的所有值表3和SUM()作爲SUM3
我可以使用3個不同的查詢來解決這個問題,但真的很希望有一個MySQL查詢返回結果。
它沒有任何意義,把所有這些查詢到一個:
男人是對的,你試圖實現的是不是真的有可能與一個查詢。您需要查看在不同ID上使用計數函數,例如
SELECT COUNT(DISTINCT T1。[ID])FROM T1 SELECT COUNT(DISTINCT T2。[ID])來自T2 SELECT COUNT FROM T3
等(DISTINCT T3。[ID])
好吧,我認爲一個查詢的想法絕對有可能。嘗試這樣的:
select c1.id
, sum(c1.val) as sum1, count(distinct(c1.id)) as cnt1
, sum(c2.val) as sum2, count(distinct(c2.id)) as cnt2
, sum(c3.val) as sum3, count(distinct(c3.id)) as cnt3
from c1, c2, c3
where c1.id = c2.id
and c2.id = c3.id
group by id
如果您的數據沒有完全填充所有表,您可能需要外連接。
這幾乎與我放在一起的查詢相同 - 問題是它僅返回所有三個表中存在的id的值。它不會爲僅存在於一個或兩個表中的id的值進行求和。它還會將每次和平時的總和相乘。 – blaz 2011-03-25 14:20:58
即使您將某些SELECT語句表示爲子查詢,它們仍然都包含在一個「查詢」中。這通常是一個要求,而不是'我的查詢中不能有多個SELECT關鍵字'。 – Randy 2011-03-25 13:48:17