2011-03-25 30 views
2

我正在顛覆我的頭(似乎是相當)簡單的解決方案,但無法讓它工作。獲取和計算來自3個不相關的mysql表的數據

我有3個不同的表我需要從中獲取信息。他們可以與id列相關聯。我想要做的是:

  1. 檢查多次ID如何顯示在表1和SUM()作爲SUM1

  2. 檢查相應table1.data領域的所有值多少次ID出現在表2和SUM()作爲SUM2

  3. 查身份證多少次出現在相應table2.data領域的所有值表3和SUM()作爲SUM3

相應table3.data領域的所有值

我可以使用3個不同的查詢來解決這個問題,但真的很希望有一個MySQL查詢返回結果。

回答

0

它沒有任何意義,把所有這些查詢到一個:

  1. 數據不 相互
  2. 任何可能的方法涉及 仍包含3個查詢; 的問題仍然只是你 將其中的兩個表示爲 子查詢的第一個查詢,或者 分別調用每個查詢。
+1

即使您將某些SELECT語句表示爲子查詢,它們仍然都包含在一個「查詢」中。這通常是一個要求,而不是'我的查詢中不能有多個SELECT關鍵字'。 – Randy 2011-03-25 13:48:17

1

男人是對的,你試圖實現的是不是真的有可能與一個查詢。您需要查看在不同ID上使用計數函數,例如

SELECT COUNT(DISTINCT T1。[ID])FROM T1 SELECT COUNT(DISTINCT T2。[ID])來自T2 SELECT COUNT FROM T3

等(DISTINCT T3。[ID])

2

好吧,我認爲一個查詢的想法絕對有可能。嘗試這樣的:

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 

如果您的數據沒有完全填充所有表,您可能需要外連接。

+0

這幾乎與我放在一起的查詢相同 - 問題是它僅返回所有三個表中存在的id的值。它不會爲僅存在於一個或兩個表中的id的值進行求和。它還會將每次和平時的總和相乘。 – blaz 2011-03-25 14:20:58

相關問題