СУММА чисел из while while

#php #sql

Вопрос:

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

    $db = ("SELECT distinct price FROM `tests`  order by price desc  ");
   $resultprice  = $conn->query($db);
   while ($rowprice = mysqli_fetch_array($resultprice ))
   {   
   $rowprice=$rowprice['price'];
   $db = ("SELECT sum(amount) FROM `tests` where  price='$rowprice'");
   $resultamount  = $conn->query($db);
   while ($rowamount = mysqli_fetch_array($resultamount ))
   {   
     $pamount=$rowamount[0];
     echo $rowprice; echo "<br>";
     $sumprice=($rowprice-"70")*$pamount;
   }    
   echo $sumprice;
   }
 

Комментарии:

1. Если у вас возникли проблемы с результатом, попробуйте разделить проблему на части. Сначала задайте вопрос SQL, имея достаточно данных, чтобы показать эту проблему SQL.

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

3. Ваш вопрос не содержит подробностей о продуктах. Пожалуйста, добавьте эту деталь (к вопросу), если ваш вопрос касается продуктов. Попробуйте прояснить весь вопрос и, если возможно, ограничьте проблему SQL, если ваша текущая проблема связана с SQL. Текущий ответ уже должен касаться существующего вопроса. Ты пробовал это сделать? Создайте полный (но минимальный) тестовый случай, в котором будут показаны ваши таблицы, данные теста, ваш фактический результат и (цель) ожидаемый результат.

Ответ №1:

На самом деле нам не нужно зацикливаться на программе, чтобы сделать это. Используйте GROUP BY вместо этого.

 SELECT price
     , sum(amount)
  FROM `tests`
 GROUP BY price
 ORDER BY price
;
 

Если tests таблица содержит подробную информацию о проданном продукте, мы можем рассчитать общую сумму каждого проданного продукта, например:

 SELECT product
     , sum(amount) AS total
  FROM tests
 GROUP BY product
 ORDER BY sum(amount)
;