2011-12-09 150 views
0

我想參加2個數據庫一起,制定出每個人的總和與這兩個表相同的ID,如果你在那裏IM來自哪裏...將SUM()到MySQL JOIN查詢

我有一個數據庫ID,PRODUCT_NAME,PRODUCT_DESCRIPTION 而另一個具有ID,庫存量,DATE_ADDED

我已經加入了數據庫一起使用JOIN功能和它正確地顯示它們,但是對於每一個進入數據庫它增加了另一行當我添加股票並在前端顯示另一行時。我希望它將所有相同的ID分組到一行中。

我已經試過這樣:

$result = mysql_query("SELECT * FROM site_products JOIN site_trans ON site_products.product_id = site_trans.trans_product GROUP BY site_products.product_id"); 

這組相同的ID連成一排,但該股量只顯示最後添加的量,而不是總量。

我正在考慮添加SUM()到這個,但我不知道它會在查詢中去。

+0

SELECT SUM(site_products.stock_amount )從site_products類似的東西? – Ruben

+3

只是爲了澄清,當你說上面的「數據庫」,我認爲你的意思是「表」,對吧? –

+0

也許稍微OT,但儘量避免使用'*'來命名列,但繁瑣的可能是.. :) – Nonym

回答

0

sqlcourse2.com

The GROUP BY clause will gather all of the rows together that contain data in the 
specified column(s) and will allow aggregate functions to be performed on the 
one or more columns. 

您可以在下面的鏈接瞭解更多關於GROUP BY與聚合函數用法:

現在,我認爲這將是容易理解下面的查詢解決了你的問題:

SELECT 
    site_products.product_id, 
    SUM(stock amount) AS total_amount 
    FROM site_products JOIN site_trans 
      ON site_products.product_id = site_trans.trans_product 
    GROUP BY site_products.product_id 
0
 
SELECT site_products.*, SUM(site_trans.stock_amount) AS total_stock FROM site_products JOIN site_trans ON (site_products.product_id = site_trans.trans_product) GROUP BY site_products.product_id 
0

這應該工作:

$result = mysql_query("SELECT site_products.Id, site_products.product_name, site_products.product_description, SUM(site_trans.stockamount) FROM site_products JOIN site_trans ON site_products.product_id = site_trans.trans_product GROUP BY site_products.product_id, site_products.product_name, site_products.product_description");