добавление SUM () к запросу mySQL JOIN - PullRequest
0 голосов
/ 09 декабря 2011

Я хочу объединить 2 базы данных и вычислить сумму каждой из них с одинаковым идентификатором из обеих таблиц, если вы поймете, откуда я иду ...

У меня есть одна база данных с идентификатором product_name, product_description и другие имеют идентификатор, сумму запаса, дату_добавления

Я соединил базы данных вместе, используя функцию JOIN, и он отображает их правильно, но для каждой записи в базу данных он добавляет другую строку, когда я добавляю акциипоказывает еще один ряд на фронтенде.Я хотел бы, чтобы все одинаковые идентификаторы были сгруппированы в один ряд.

Я пробовал это:

$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");

он объединяет одни и те же идентификаторы в один ряд, но сумма на складе простоотображает последнюю добавленную сумму, а не общую сумму.

Я думал о добавлении SUM () к этому, но я не уверен, куда он пойдет в запросе.

Ответы [ 3 ]

0 голосов
/ 09 декабря 2011
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 голосов
/ 09 декабря 2011

Это должно работать:

 $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");
0 голосов
/ 09 декабря 2011

С 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...