PHP и MySQL: показать SUM о чем-то, классифицированном по отдельным категориям

Не могли бы вы мне помочь? Если вы можете дать ответ с объяснением, я буду более благодарен, потому что хочу узнать больше, я уже благодарен за это сообщество. Помогает мне в обучении. Но только ответ для меня достаточно хорош, так как мне действительно нужен код для этого.

Хорошо, теперь я буду определять проблему.

Теперь, скажем, у меня есть таблица с этим столбцом. tbl_transaction -> id | ref | описание | стоимость | категория | подкатегория

value – целочисленный тип столбца с некоторой величиной. например, 100000 или 200000.

категория и подкатегория – это столбец типа VARCHAR, который содержит категорию и подкатегорию.

мой желаемый результат будет показывать SUM значения на основе его категории. для этой логики я попробовал этот запрос (его недействительный стандарт кода mySQL, просто хочу показать логику).

X = select DISTINCT category from tbl_transaction; select SUM(value) from tbl_transaction WHERE category='X'; 

он действительно хорошо работает на MySQL. но я хочу напечатать этот результат и на PHP. проблема в том, что я не могу напечатать это значение вместе с категорией SUM и DISTINCT. Мне нужно что-то вроде (в PHP output / echo):

Категория | SUM категории

A | 100000

B | 400000

C | +500000

Я пробовал этот код на php, и его только печатал категорию хорошо, но не SUM категории.

 $query1=mysql_query("select DISTINCT category from tbl_transaction"); echo "<table><tr><td>Category</td>"; while($query2=mysql_fetch_array($query1)) { echo "<tr><td>".$query2['category']."</td></tr></table>"; $query3=mysql_query("select SUM(value) from tbl_transaction WHERE category ="(select DISTINCT category from tbl_transaction)""); echo "<table><tr><td>SUM of Category</td>"; while($query4=mysql_fetch_array($query3)) { echo "<tr><td>".$query4['value']."</td></tr></table>"; } } в $query1=mysql_query("select DISTINCT category from tbl_transaction"); echo "<table><tr><td>Category</td>"; while($query2=mysql_fetch_array($query1)) { echo "<tr><td>".$query2['category']."</td></tr></table>"; $query3=mysql_query("select SUM(value) from tbl_transaction WHERE category ="(select DISTINCT category from tbl_transaction)""); echo "<table><tr><td>SUM of Category</td>"; while($query4=mysql_fetch_array($query3)) { echo "<tr><td>".$query4['value']."</td></tr></table>"; } } в $query1=mysql_query("select DISTINCT category from tbl_transaction"); echo "<table><tr><td>Category</td>"; while($query2=mysql_fetch_array($query1)) { echo "<tr><td>".$query2['category']."</td></tr></table>"; $query3=mysql_query("select SUM(value) from tbl_transaction WHERE category ="(select DISTINCT category from tbl_transaction)""); echo "<table><tr><td>SUM of Category</td>"; while($query4=mysql_fetch_array($query3)) { echo "<tr><td>".$query4['value']."</td></tr></table>"; } } 

Я попробовал несколько раз, это результат null / resource id # 7 / error. гораздо больше от этого, я действительно хочу что-то вроде этого.

Категория А

Подкатегория A – Общее количество подкатегории A

Подкатегория B – Общее количество подкатегории B

Подкатегория C – Общее количество подкатегории C

Итого – общее количество категории A

Категория B

Подкатегория A – Общее количество подкатегории A

Подкатегория B – Общее количество подкатегории B

Подкатегория C – Общее количество подкатегории C

Итого – общее количество категории B

Заранее спасибо, сообщество Stackoverflow.

Вы можете попробовать SQL-запрос, подобный этому, чтобы SUM значения GROUPing по столбцу:

 SELECT SUM(value) as Total_val, category FROM tbl_transaction GROUP BY category 

И вы можете использовать это в PHP следующим образом: (Я буду вводить PDO, потому что команды mysql_ стареют прямо сейчас и не рекомендуются)

 //Creating connection $connection=new PDO("mysql:host=127.0.0.1;dbname=database_name","root",""); //Creating main query, fetching main categories $query=$connection->prepare("SELECT category, SUM(value) as MAIN_CAT_TOTAL_VAL FROM tbl_transaction GROUP BY category"); $query->execute(); //executing query foreach($query->fetchAll() as $q) //fetching results { echo "<b>".$q["category"].":<br/></b>"; //printing main category name //creating second query which sums value column and groups by sub category $query2=$connection->prepare("SELECT SUM(value) as TOTAL_VALUE, sub-category FROM tbl_transaction WHERE category=:p1 GROUP BY sub-category"); $query2->bindParam(":p1",$q["category"],PDO::PARAM_STR); //binding parameter to second query $query2->execute(); //executing second query foreach($query2->fetchAll() as $q2) //fetching the results { echo $q2["sub-category"]." -> ".$q2["TOTAL_VALUE"]."<br/>"; //printing the results } echo "total amount of category ".$q["category"]." = ".$q["MAIN_CAT_TOTAL_VAL"]; echo "<hr/>"; //cosmetics } 

Это должно работать, если вы отредактируете его правильно. Это может выглядеть немного сложно, если вы не знаете, как использовать PDO, я предлагаю вам взглянуть на него.