2

私はこの作業クエリを持っています

SELECT t1.id as stockid, t1.description as stockdescription, t2.inkoop as price , COUNT(t2.inkoop) as cnt, 
(t2.inkoop *  COUNT(t2.inkoop)) as totalamount
FROM database1.table_products t1 
LEFT JOIN database1.table_stock t2 ON t1.id = t2.stock_id 
WHERE 1 
GROUP BY t2.inkoop
ORDER BY t1.id ASC

1 つのデータベース、2 つのテーブル: t1 は、ID と説明を含む製品の「説明」データベースです。t2 は、価格 (購入) の製品が多数あり、stock_id によって参照される在庫です。

Output:
id  stockdescription   price cnt totalamount
1   Product1           1067  15  16005
1   Product1           1290 103  132870
2   Product2           2750  70  192500
3   Product3           500    0  0

しかし今、私はこの 2 番目のデータベース (database2) と 2 番目の在庫テーブル (stock2) (database1.table_stock とまったく同じ構造) を持っています。

「cnt2」を追加して合計を結果に変更できるようにクエリを変更するにはどうすればよいですか?

Like this:
id  stockdescription   price cnt cnt2 totalcnt totalamount
1   Product1           1067  15   0    15      16005
1   Product1           1290 103   0    103     132870
2   Product2           2750  70   5    75      206250
3   Product3           500    0   4     4      2000 
4

1 に答える 1

1

複数のテーブルを結合することはできますが、2つのストックテーブルが完全に結合されるため、の後に間違ったカウントが発生しGROUP BYます。たとえば、次の行に沿ってクエリをネストすることで、これを回避できます。

SELECT sub.*, COUNT(stock2.inkoop) AS cnt2
FROM ( <paste your query here> ) AS sub
LEFT JOIN database2.stock2 AS stock2 ON sub.stockid = stock2.stock_id
GROUP BY sub.stockid
ORDER BY sub.stockid ASC

これで、2つの左結合があり、それぞれに独自のがありGROUP BYます。したがって、各左側の結合には左側のテーブル要素が1つしか表示されず、一度に結合するテーブルが多すぎるために重複が発生することはありません。

于 2012-10-25T20:48:27.633 に答える