从3个不相关的mysql表中获取和计算数据

时间:2011-03-25 13:22:35

标签: mysql

我正在彻底解决(似乎很相似)简单的解决方案,但无法让它发挥作用。

我需要3个不同的表来获取信息。它们可以与id列相关联。我想做的是:

  1. 检查id在table1中出现的次数和SUM()对应的table1.data字段的所有值为sum1

  2. 检查id出现在table2中的次数和SUM()对应的table2.data字段的所有值为sum2

  3. 检查id出现在table3中的次数和SUM()对应的table3.data字段的所有值为sum3

  4. 我可以使用3个不同的查询来解决这个问题但是真的很想拥有一个MySQL查询来返回结果。

3 个答案:

答案 0 :(得分: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

如果您的数据未在所有表格中完全填充,则可能需要外部联接。

答案 1 :(得分:1)

盖伊是对的,你想要实现的目标一个查询真的不可能。您需要查看在不同ID上使用count函数,例如

SELECT COUNT(DISTINCT t1。[ID])FROM t1 SELECT COUNT(DISTINCT t2。[ID])FROM t2 SELECT COUNT(DISTINCT t3。[ID])FROM t3

答案 2 :(得分:0)

将所有这些查询合二为一,没有任何意义:

  1. 数据与之无关 彼此
  2. 任何可能的方法     仍将包含3个查询;该     问题仍然只是你     将两个表达为     第一个查询的子查询,或     分别调用每个查询。