|
|
|
|
|
для: новичек
(12.07.2005 в 21:10)
| | Вот без кратных 10 эта задача решается при помощи запроса
SELECT p_id, sum(exchange)
FROM lines
GROUP BY p_id WITH ROLLUP;
|
WITH ROLLUP - выводит в конце сумму по группам (правда введён в MySQL, начиная только с 4.1.1). | |
|
|
|
|
автор: новичек (12.07.2005 в 21:10) |
|
|
для: новичек
(12.07.2005 в 20:39)
| | вообще может подскажите какое то более простое решение задачи.
задача такая.
основные поля exchange и p_id
есть несколько групп, группа определяется по значению в поле p_id
у каждой группы есть свое числовое значение в поле exchange
количество рядов у каждой группы может быть разное.
задача
сделать выборку по каждой группе с суммой всех значений из поля exchange по количеству рядов кратным 10.
сложить все полученные значения от всех групп.
вывести результат. | |
|
|
|
|
автор: новичек (12.07.2005 в 20:39) |
|
|
для: cheops
(12.07.2005 в 00:49)
| | и еще такая проблема
предположим, что в поле pmt_id 2 группы 9 и 10, в поле exchange у этих групп разные значения, у одной 0.1 у другой 0.15, общее число $num = 40 к примеру, из 40 10 это группы 9, а 30 это группы 10, по идеи она должна вывести общую сумму 2 групп 1+4.5=5.5, но она выводит сумму только одной группы. а если к примеру в 9 группе не 10 а 15 таблиц, а так как $num=40, то она и выводит общию сумму 1.5, а вторая група просто игнорируется.
как это все исправить, чтобы правильно работало ???
помогите, горю !!! | |
|
|
|
|
автор: новичек (12.07.2005 в 01:12) |
|
|
для: cheops
(12.07.2005 в 01:02)
| | спасибо попробую, а насчет LIMITа никаких пожеланий не будет ? | |
|
|
|
|
|
|
|
для: новичек
(12.07.2005 в 00:56)
| | Можно воспользоваться следующим кодом
<?php
$sbalance = mysql_query($qry_sbalance);
if(!$sbalance) exit(mysql_error());
while($total = mysql_fetch_array($sbalance))
{
echo $total['p_id']."<br>";
}
?>
|
| |
|
|
|
|
автор: новичек (12.07.2005 в 00:56) |
|
|
для: cheops
(12.07.2005 в 00:48)
| | MySQL 4.1.8-max
я так прописал, но как мне вывести чтобы она была видимой переменной, тоесть к примеру
$pp_id = $что-то[p_id'];
что нужно подставить вместо что-то ?
или как то по другому она выводится ? | |
|
|
|
|
|
|
|
для: новичек
(11.07.2005 в 22:48)
| | Хм... вообще-то не должно бы... а версия MySQL какая? | |
|
|
|
|
|
|
|
для: новичек
(11.07.2005 в 23:47)
| | А прямо через запятую, MySQL здесь нарушает стандарт SQL и позволяет помещать рядом с агрегатными функциями имена столбцов, по которым происходит группировка
<?php
$qry_sbalance = "select p_id, sum(exchange) from lines where
uid=$user_id and status='$STATUS_ENUM_ENABLE'
and pmt_type<>'$TRANS_ENUM_SPEND' and date<now() GROUP BY p_id LIMIT $num";
?>
|
| |
|
|
|
|
автор: новичек (11.07.2005 в 23:47) |
|
|
для: новичек
(11.07.2005 в 22:48)
| | и еще, как при таком запросе вытащить значение p_id , что бы знать какие группы она суммирует ? | |
|
|
|
|
автор: новичек (11.07.2005 в 22:48) |
|
|
для: новичек
(11.07.2005 в 14:06)
| | уважаемый ХЕОПС, вроде все работает, но есть один баг которого я не могу понять, запрос совершенно не реагирует на LIMIT, пробовал вместо переменной подставлять конкретное число, не помогает.
тоесть если есть к примеру в группе 12 записей, то она так и считает 12, а не 10 как должно быть, такое впечатление что LIMIT вообще не прописан.
в чем может быть дело ? | |
|
|
|
|