3

2つのクエリのSUMの下に
Query1:*の値があります

SELECT SUM(price)FROM TABLE1 WHERE acc_id= '555'

クエリ2:

SELECT SUM(price)FROM TABLE2 WHERE account= '555' && active = '1'

この2つのクエリを組み合わせようとしましたが、間違った合計結果が得られました。たとえば、との場合query1 sum is: -86500、 RESULTは次のような数値で表示さQuery2 sum is: 76000れる必要があります。-10500-486000

私はこのようにしようとしていますが、期待した結果が得られていません。

SELECT SUM(t1.price + t2.price) AS TotalCredit 
FROM TABLE1 AS t1, TABLE2 AS t2 
WHERE t1.`acc_id` = '555' && t2.`Account`='555' && t2.`Active`='1'

表画像:ここに画像の説明を入力してください

4

6 に答える 6

5

結合により、レコードの数が重複し、合計の値が高くなります。これを試してください

SELECT sum(prc) 
FROM (
    SELECT SUM(price) prc FROM TABLE1 WHERE acc_id = '555'
    union all 
    SELECT SUM(price) prc FROM TABLE2 WHERE account = '555' && active='1'
) a
于 2012-12-24T16:57:06.083 に答える
1

これを試して

SELECT SUM(C.TOTAL) AS TOTAL_CREDIT FROM (SELECT SUM(A.price) AS TOTAL FROM TABLE1 A WHERE A.acc_id = '555'
UNION ALL
SELECT SUM(B.price) AS TOTAL FROM TABLE2 B WHERE B.account = '555' && B.active='1') C;
于 2012-12-24T16:56:13.840 に答える
0

これを試して

  SELECT (t1.price + t2.price) AS TotalCredit 
    FROM TABLE1 AS t1, TABLE2 AS t2 
    WHERE t1.`acc_id` = '555' && t2.`Account`='555' && t2.`Active`='1'

編集:

ここであなたが探しているものは私が思う

 SELECT (SUM(t1.price)+SUM(t2.price) )/2  AS TotalCredit 
FROM Table1 AS t1, Table2 AS t2 
WHERE t1.`acc_id` = '555' && t2.`account`='555' && t2.`active`='1'

デモフィドルはこちら

于 2012-12-24T16:49:31.110 に答える
0

それを試してみてください

SELECT (SUM(t1.price) + SUM(t2.price)) AS TotalCredit 
FROM TABLE1 AS t1, TABLE2 AS t2 
WHERE t1.`acc_id` = '555' && t2.`Account`='555' && t2.`Active`='1'
于 2012-12-24T16:56:52.310 に答える
0

これはどう:

SELECT SUM(a) 
FROM
  (SELECT SUM(price) AS a
   FROM TABLE1 
   WHERE acc_id = '555'
   UNION ALL
   SELECT SUM(price) AS a
   FROM TABLE2 
   WHERE account = '555' && active='1')
于 2012-12-24T17:06:34.460 に答える
0

Joinもっとよくなるはず。:)テーブルスキーマを見せていただければさらに良いでしょう。これは、いくつかの想定されたサンプルデータに基づく解決策です。

サンプルデータ:

表1:

ID  PRICE
11  200
55  300
33  200
44  100
55  500

表2:

ID  PRICE   ACTIVE
1   200     0
2   300     1
55  200     0
55  100     1
55  400     1

クエリ:

select sum(t.price) + x.tb2credit
from tb1 as t
inner join
(SELECT id, SUM(price) AS Tb2Credit 
FROM tb2
WHERE id = 55
and `Active`=1) x
on t.id = x.id

結果:

SUM(T.PRICE) + X.TB2CREDIT
1300
于 2012-12-24T17:09:55.070 に答える