1

我有两张桌子

td_sell

|----------|----------------|------------------|
|  id      |   user_id      |    price         |
|----------------------------------------------|
|  1       |      2         |     10           |
|----------------------------------------------|
|  2       |      1         |      5           |
|----------------------------------------------|
|  3       |      2         |      3           |
|----------------------------------------------|

和 td_commsion

|----------|----------------|------------------|
|  id      |   user_id      |    price         |
|----------------------------------------------|
|  1       |      1         |      3           |
|----------------------------------------------|
|  2       |      1         |      5           |
|----------------------------------------------|
|  3       |      2         |      3           |
|----------------------------------------------|

现在我想要一个这样的 sql 查询

SELECT (SUM(td_sell.price) + SUM(td_comission.price)) AS his_earning
FROM td_sell, td_comission 
WHERE td_sell.user_id='1'
AND td_comission.user_id='1'

但它显示异常结果

结果应该是13,但它的显示29

4

4 回答 4

1

这将起作用:

SELECT (SELECT SUM(s.price) FROM td_sell s WHERE s.user_id = 1)
+
(SELECT SUM(c.price) FROM td_comission c WHERE c.user_id = 1)

演示SqlFiddle

于 2013-06-18T14:18:29.397 回答
0

您将获得两个表的笛卡尔连接的总和。

http://en.wikipedia.org/wiki/Cartesian_product

于 2013-06-18T14:09:39.900 回答
0
SELECT sum(price)
FROM (
  SELECT * FROM td_sell
  UNION ALL
  SELECT * FROM td_commission
) a
where a.user_id=1

这是一个 SQL 小提琴: 小提琴

于 2013-06-18T14:18:19.380 回答
0

在合并结果之前,您需要对每个表分别进行求和。这是一种方法:

select (sell + commission) as his_earning
from (select SUM(td_sell.price) as sell
      from td_sell
      where td_sell.user_id='1'
     ) s cross join
     (select SUM(td_comission.price) as commission
      from td_comission
      where td_comission.user_id='1'
     ) c
于 2013-06-18T14:18:52.197 回答