Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Помогите с выборкой

Сообщения:  [1-10]    [11-20]  [21-27] 

 
 автор: cheops   (12.07.2005 в 21:57)   письмо автору
 
   для: новичек   (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а никаких пожеланий не будет ?

   
 
 автор: cheops   (12.07.2005 в 01:02)   письмо автору
 
   для: новичек   (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'];

что нужно подставить вместо что-то ?
или как то по другому она выводится ?

   
 
 автор: cheops   (12.07.2005 в 00:49)   письмо автору
 
   для: новичек   (11.07.2005 в 22:48)
 

Хм... вообще-то не должно бы... а версия MySQL какая?

   
 
 автор: cheops   (12.07.2005 в 00:48)   письмо автору
 
   для: новичек   (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 вообще не прописан.
в чем может быть дело ?

   

Сообщения:  [1-10]    [11-20]  [21-27] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования