Не могли бы вы мне помочь? Если вы можете дать ответ с объяснением, я буду более благодарен, потому что хочу узнать больше, я уже благодарен за это сообщество. Помогает мне в обучении. Но только ответ для меня достаточно хорош, так как мне действительно нужен код для этого.
Хорошо, теперь я буду определять проблему.
Теперь, скажем, у меня есть таблица с этим столбцом. 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, я предлагаю вам взглянуть на него.