-2

重複の可能性:
2 つのテーブルから合計を取得するには?

最初の 3 つのテーブルがあります " " 2products番目の " " items3 番目の " sales"しかし、コードが等しい3番目のテーブルから名前を取得したい。私のコードをチェックしてください
codequantitycodename

Select code, sum(qtd),name
from (           select a.code, a.qtd from product a
       union all select b.code, b.qtd from items   b
       union all select c.name        from sales   c where b.code=c.code
     )
group by code

最初の2つは私に完璧な値を与えますが、3番目のフィクションは名前も表示しないというエラーを与えます。

4

3 に答える 3

0

使用するときは、結合する列が各ステートメントUNIONと一致していることを確認してください。SELECT最初の 2 つのSELECTステートメントは、列の数が同じであるため、正常に機能します。3 つ目は、列が 1 つしかないため失敗しました。


以下は、UNION を使用して2 つ (またはそれ以上) のクエリの結果セットを結合するための基本的なルールです。

  • 列の数と順序は、すべてのクエリで同じでなければなりません。
  • データ型は互換性がなければなりません。

あなたのクエリから、私はあなたがこのようにしたいと思います、

SELECT  a.code, b.name, SUM(a.qtd) totalSUM
FROM    product a
            INNER JOIN sales b
                ON a.code = b.code
GROUP BY a.code, b.name
UNION
SELECT  a.code, b.name, SUM(a.qtd) totalSUM
FROM    items a
            INNER JOIN sales b
                ON a.code = b.code
GROUP BY a.code, b.name
于 2012-08-30T00:57:55.553 に答える
0

ハム....

SELECT
  sales.name,
  (SELECT SUM(products.quantity) FROM products WHERE products.code = sales.code) as products.quantity,
  (SELECT SUM(items.quantity) FROM items WHERE items.code = sales.code) as items_quantity,
FROM sales
于 2012-08-30T00:58:10.237 に答える
0

実際の要件が何であるかは明確ではありませんが、次のようなことをしたいと思います。

select code = t1.code ,
       name = t2.name ,
       qtd  = t1.qtd 
from ( select code =      t.code   ,
              qtd  = sum( t.qtd  )
       from (           select a.code, a.qtd from product a
              union all select b.code, b.qtd from items   b
            ) t
       group by t.code
     ) t1
join sales t2 where t2.code = t1.code

乾杯!

于 2012-08-30T01:09:40.767 に答える