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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Обработка таблицы с большим количеством столбцов
 
 автор: Владимир55   (03.05.2009 в 20:07)   письмо автору
 
 

Таблица tmp_1s_vse содержит столбец str с именем страниц и 200 столбцов с именами вида t_0 ... t_200.

Нужно для каждого значения str просуммировать столбцы и записать результат в другую таблицу tmp_1s_dif аналогичной структуры.

Я попробовал сделать это нижеследующим образом (для первых нескольких столбцов) - не получилось...

     mysql_query ("INSERT INTO tmp_1s_dif
         (str, t_0, t_1, t_2, t_3, t_4)
      SELECT str, SUM(t_0) AS cnt_0,
      SUM(t_1) AS cnt_1, SUM(t_2) AS cnt_2, SUM(t_3) AS cnt_3, SUM(t_4) AS cnt_4
        FROM tmp_1s_vse ORDER BY str ");


В чем причина?

  Ответить  
 
 автор: cheops   (04.05.2009 в 11:49)   письмо автору
 
   для: Владимир55   (03.05.2009 в 20:07)
 

Сообщение об ошибке какое-нибудь выдается? В чем заключается не удача (нули, не добавляется запись)?

  Ответить  
 
 автор: Владимир55   (04.05.2009 в 12:01)   письмо автору
 
   для: cheops   (04.05.2009 в 11:49)
 

Сообщения об ошибке нет.
Но если посчитать калькулятором, то суммы не соответствуют слагаемым.

  Ответить  
 
 автор: cheops   (04.05.2009 в 12:27)   письмо автору
 
   для: Владимир55   (04.05.2009 в 12:01)
 

А запрос именно такой? GROUP BY не используется?

  Ответить  
 
 автор: Владимир55   (04.05.2009 в 12:53)   письмо автору
 
   для: cheops   (04.05.2009 в 12:27)
 

Спасибо, подправил. Запрос такой:
    mysql_query ("INSERT INTO tmp_1s_dif
         (str, t_0, t_1, t_2, t_3, t_4)
      SELECT str, SUM(t_0) AS cnt_0,
      SUM(t_1) AS cnt_1, SUM(t_2) AS cnt_2, SUM(t_3) AS cnt_3, SUM(t_4) AS cnt_4
        FROM tmp_1s_vse GROUP BY str ");


Арифметика не сходится самым радикальным образом: там, где сумма имеет численное значение, присутствует NULL, а где-то числа, но не те. В общем, "каша".

  Ответить  
 
 автор: cheops   (04.05.2009 в 13:04)   письмо автору
 
   для: Владимир55   (04.05.2009 в 12:53)
 

Нет, нет... GROUP BY как раз не нужно.

  Ответить  
 
 автор: Trianon   (04.05.2009 в 13:36)   письмо автору
 
   для: cheops   (04.05.2009 в 13:04)
 

как это не нужно?
без GROUP BY опреатор теряет смысл.

  Ответить  
 
 автор: cheops   (04.05.2009 в 13:41)   письмо автору
 
   для: Trianon   (04.05.2009 в 13:36)
 

Хм... пожалуй так. Вообще хорошо бы иметь небольшой дамп исходной таблицы, чтобы вопроизвести ситуацию.

  Ответить  
Rambler's Top100
вверх

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