Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Наверное сложный запрос Mysql

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Gokusq
Отправлено: 12 Апреля, 2011 - 21:16:17
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Имеем таблицу базы
допустим такую

CODE (htmlphp):
скопировать код в буфер обмена
  1. $query="create table table1 (
  2.         id int(5) not null auto_increment,
  3.         Dohod float null,
  4.         Rashod float null,
  5.         Itog float null,
  6.         Data date,
  7.         primary key(id));";


поля доход ,расход вводим сами,а поле Itog необходимо посчитать в процессе.
причём считать нужно суммарный итог по всем записям.
т.е. типа так
CODE (SQL):
скопировать код в буфер обмена
  1. "insert into Table1 (Dohod,Data,Itog) values ($Dohod,'".$Year."-01-01',где Itog равен итог предыдущей записи + ДоходТекущей-РасходТекущей)";

Можно ли это сделать одним запросом?
И будет ли это работать быстрее чем если делать несколько запросов?

(Отредактировано автором: 12 Апреля, 2011 - 21:17:12)

 
 Top
movEAX
Отправлено: 12 Апреля, 2011 - 21:52:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Можно попробовать с помощью UPDATE, поподробней завтра напишу, если еще будет необходимость.


-----
армия.. самое убогое место
 
 Top
Gokusq
Отправлено: 12 Апреля, 2011 - 22:01:40
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




movEAX пишет:
Можно попробовать с помощью UPDATE, поподробней завтра напишу, если еще будет необходимость.

конечно пишите.
я тоже напишу если найду.
потом сравним.
 
 Top
movEAX
Отправлено: 13 Апреля, 2011 - 09:52:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SET @netto = 0;
  2. UPDATE  table1
  3. SET itog = (SELECT @netto:=@netto + dohod - rashod )
  4. ORDER BY id ASC;


PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli('localhost', 'user', 'pass', 'dbname');
  2. $mysqli->query('SET @netto=0');
  3. $mysqli->query(
  4.    'UPDATE table1
  5.     SET itog = (SELECT @netto:=@netto + dohod - rashod)
  6.     ORDER BY id ASC'
  7. );


При условии, что данные свежевставлены и поле Itog во всех записях = Null

(Отредактировано автором: 13 Апреля, 2011 - 10:11:30)



-----
армия.. самое убогое место
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB