2013-12-25 4 views
2

Я новичок в php, mysql.Как получить общую сумму отфильтрованных данных

Я использую четыре колонны, companyname, issuedwt, receiptwt & workloss в моей базе данных.

Я использую нижеследующий запрос, чтобы получить общее количество выданных, получениеwt & workloss.

$result = mysql_query("SELECT SUM(issuedwt) AS IssuedTotal, SUM(receiptwt) AS ReceiptTotal, SUM(workloss) AS Balance FROM `worksheet`") 
or die(mysql_error()); 

Я хочу использовать вариант фильтра, основанный на companyname. (Т.е. Company1, Общества2, company3)

Если я фильтр company1, мне нужно всего лишь company1. Что мне делать?

ответ

1

Добавление «группы по» опции в запросе позволит MySQL знать, какие элементы принадлежат вместе, и он будет рассчитывать суммы для каждой группы:

"SELECT 
    SUM(issuedwt) AS IssuedTotal, 
    SUM(receiptwt) AS ReceiptTotal, 
    SUM(workloss) AS Balance 
    FROM worksheet 
    group by companyname" 

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

Вы всегда можете ограничить, какие компании отображаются с использованием опции «где» (выберите из таблицы, где COLUMN = VALUE), но я предполагаю, что вы хотите получить данные для каждой компании; то просто используйте группу.

2

Вы можете просто фильтровать по companyname с WHERE пункта:

SELECT 
    SUM(issuedwt) AS IssuedTotal, 
    SUM(receiptwt) AS ReceiptTotal, 
    SUM(workloss) AS Balance 
FROM `worksheet` 
WHERE compamnyname = 'company1' -- for example 

Это даст вам IssuedTotal, ReceiptTotal и Balance только в company1.


Однако, если вы хотите, чтобы получить список companyname с и итоговыми, используйте GROUP BY companyname, но вы можете фильтровать по CompanyName:

SELECT companyname, 
    SUM(issuedwt) AS IssuedTotal, 
    SUM(receiptwt) AS ReceiptTotal, 
    SUM(workloss) AS Balance 
FROM `worksheet` 
GROUP BY companyname 
0

Попробуйте это:

SELECT SUM(issuedwt) AS IssuedTotal, SUM(receiptwt) AS ReceiptTotal, 
     SUM(workloss) AS Balance 
FROM `worksheet` 
WHERE companyname = 'company1'; 

Если вы хотите получить данные о компании, чем использовать ниже запроса:

SELECT companyname, SUM(issuedwt) AS IssuedTotal, SUM(receiptwt) AS ReceiptTotal, 
     SUM(workloss) AS Balance 
FROM `worksheet` 
GROUP BY companyname; 
0

Используйте GROUP BY пункт вместе с вашим запросом:

SELECT companyname, SUM(issuedwt) AS IssuedTotal, SUM(receiptwt) AS ReceiptTotal, 
SUM(workloss) AS Balance FROM `worksheet` 
GROUP BY companyname 
Смежные вопросы