Найти Макс суммы в MySQL - PullRequest
2 голосов
/ 24 марта 2012

Добрый день, ребята в настоящее время я делаю PHP (управление запасами) для своих товаров, в моей системе клиенты могут покупать товары, я сохраняю идентификатор клиента и количество проданных товаров в одной таблице (называемой таблицей продаж) в MySQL, теперь я хочу показать лучшее клиент. (кто купил больше всего товаров в моей системе) Я написал код, чтобы узнать, сколько товаров купил каждый покупатель, но я не знаю, как показать лучшего покупателя. см. этот код:

$test= "SELECT c_id, SUM(n_sell) FROM sell GROUP BY c_id "; 
$resut = mysql_query($test) or die(mysql_error());
while($t = mysql_fetch_array($resut)){
    echo "Number of sold: ". $t['SUM(n_sell)'] ." to". $t['c_id'] .":id of customer";
    echo "<br />";
}

Показывает всех моих клиентов с количеством проданных товаров, мне нужно показать конкретного клиента, который имеет максимальное количество продаваемых предметов. например, это мой результат:

Количество проданных товаров: с 11 до 2: идентификатор клиента Количество проданных товаров: от 103 до 3: идентификатор клиента

но я хочу просто показать:

Количество проданных товаров: от 103 до 3: идентификатор клиента

Надеюсь, вы, ребята, сможете меня достать, Благодарю.

Ответы [ 3 ]

4 голосов
/ 24 марта 2012

Попробуйте:

$test = "SELECT c_id, MAX(Bought) AS MaxBought FROM (SELECT c_id, SUM(n_sell) AS Bought FROM sell GROUP BY c_id) AS tmp HAVING MAX(Bought) = tmp.Bought"; 
$resut = mysql_query($test) or die(mysql_error());
while($t = mysql_fetch_array($resut)){
    echo "Number of sold: ". $t['MaxBought'] ." to". $t['c_id'] .":id of customer";
    echo "<br />";
}

Вот только SQL-запрос для облегчения понимания:

SELECT c_id, MAX(Bought) AS MaxBought
FROM (SELECT c_id, SUM(n_sell) AS Bought
      FROM sell
      GROUP BY c_id) AS tmp
HAVING MAX(Bought) = tmp.Bought
1 голос
/ 24 марта 2012

Использование ORDER BY.

1 голос
/ 24 марта 2012

Есть два метода для этого (о которых я могу думать).Оба требуют изменения в вашем запросе SQL.

Sol.1

$test= "SELECT c_id, MAX( SUM(n_sell) ) FROM sell GROUP BY c_id ";

Sol.2

$test= "SELECT c_id, SUM(n_sell) FROM sell GROUP BY c_id ORDER BY SUM(n_sell) DESC LIMIT 1";

Оставшаяся часть вашего кода может остаться прежней.

...