2012-10-25 90 views
2

數和組我有這個工作查詢MySQL的加入,由多個數據庫

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是產品的「說明」與IDS和說明 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 

引用但現在我有這第二數據庫(DATABASE2)與第二庫存表(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 

回答

1

您可以加入多個表,但你會得到完整的連接這兩個股票行情表中,這意味着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 

現在你有兩個左連接,每個都有自己的GROUP BY。因此,每個左連接只會看到一個左手錶格因子,並且您不會因一次連接太多表格而導致重複。