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

Форум MySQL

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

 

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

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

тема: Вопрос по GROUP BY
 
 автор: ronin80   (28.10.2009 в 19:43)   письмо автору
 
 

Вопрос в следующем:

путём склеивания строк двух таблиц (UNION ALL) формируется итоговая таблица, затем применяется группировка по определённому полю, в итоге получаю например 10 строк, при добавлении в группировку ещё одного поля количество строк увеличивается до 12

т.е. запрос выглядит примерно так:

select column1, column2, sum(column3)
from (
select ...

union all

select...
)
group by column1, column2

без группировки, только с использованием UNION ALL запрос выдаёт 10 строк, при использовании вышеуказанного запроса с группировкой получается 12 строк, как только убираю группировку по column2 кол-во результирующих строк опять становится равным 10

я не могу понять как работает конструкция group by и почему происходит увеличение кол-ва строк? пусть даже если в column2 встречаются разные значения, ведь предыдущий столбец определил группы, а следующий оперирует уже в пределах первой группировки, или я не правильно понимаю?

  Ответить  
 
 автор: Trianon   (28.10.2009 в 20:04)   письмо автору
 
   для: ronin80   (28.10.2009 в 19:43)
 

Группы определяет не один столбец, а сочетание значений во всех столбцах.

  Ответить  
 
 автор: ronin80   (29.10.2009 в 06:05)   письмо автору
 
   для: Trianon   (28.10.2009 в 20:04)
 

т.е. получается результат будет определять совокупность полей группировки а не последовательность их расстановки в конструкции group by?

  Ответить  
 
 автор: Valick   (29.10.2009 в 09:33)   письмо автору
 
   для: ronin80   (29.10.2009 в 06:05)
 

а Вы пробовали менять местами column1 и column2?

  Ответить  
 
 автор: ronin80   (29.10.2009 в 10:36)   письмо автору
 
   для: Valick   (29.10.2009 в 09:33)
 

от перестановки кол-во строк в результирущей таблице не меняется, только при удалении column2 из группировки меняется кол-во строк

в принципе разобрался в чём дело, получилось что в column2 есть разные значения и соответственно результат разбивается на группы по указанным полям

я думаю я немного неправильно сформулировал вопрос, получается что при группировке по column1 из n-го количества строк получалось 10 строк, при группировке по column1, column2 - 12 строк, что в принципе логично, ведь значения column2 различаются при одинаковых значениях column1, соответственно количество строк увеличивается

  Ответить  
 
 автор: Trianon   (29.10.2009 в 11:36)   письмо автору
 
   для: ronin80   (29.10.2009 в 06:05)
 

последовательность перечисления выражений в GROUP BY не влияет ни на что.
Ну может быть, кроме оптимизации...

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

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