|
|
|
|
|
для: Valick
(25.01.2013 в 10:16)
| | Sfinks & Valick хорош умничать, идея ясна. | |
|
|
|
|
|
|
|
для: Sfinks
(25.01.2013 в 09:04)
| | Понять группировку всегда проще если ее отменить
а еще лучше её отменять поэтапно
GROUP BY if( substr( `descr`, 1, 5 )='Дог.№', 1, UUID() ), `user`, `descr`
|
GROUP BY if( substr( `descr`, 1, 5 )='Дог.№', 1, UUID() ), `user`
|
GROUP BY if( substr( `descr`, 1, 5 )='Дог.№', 1, UUID() )
|
| |
|
|
|
|
|
|
|
для: oradev
(24.01.2013 в 21:26)
| | Понять группировку всегда проще если ее отменить. Выполните такой запрос, и все вопросы отпадут:
SELECT date_format( max(`date`), '%d.%m.%Y' )`date`
, if( substr( `descr`, 1, 5 )='Дог.№', 1, UUID() ) AS voobrazhaemoe_pole
, `user`
, `descr`
, coalesce(sum(if( `type`='nal', `summ`, null )),'')`nal`
, coalesce(sum(if( `type`='beznal', `summ`, null )),'')`beznal`
FROM `charge`
WHERE `date` BETWEEN concat( CURDATE() -INTERVAL datediff( CURDATE(), '19700105' )%7 DAY, ' 00:00:00' )
AND concat( CURDATE() +INTERVAL 6-datediff( CURDATE(), '19700105' )%7 DAY, ' 23:59:59' )
ORDER BY `date`
| т.е. ДА, вы правы, у всех договоров начинающихся с 'Дог.№' voobrazhaemoe_pole будет =1, но НЕТ, вы не правы, что сгруппируются договора с разными номерами, т.к. группировка происходит по трем полям одно из которых `descr`, а оно у договоров с разными номерами разное. | |
|
|
|
|
|
|
|
для: Valick
(24.01.2013 в 20:47)
| | Валик, не буду помещать. Не хочу.
Суть то я понял, но понял только из того, для какой предметной области реализована данная кухня.
Нет ваш запрос не катит, он синтаксически ошибочен. | |
|
|
|
|
|
|
|
для: oradev
(24.01.2013 в 20:29)
| | ну хотите присвойте ему alias например voobrazhaemoe_pole и даже в выборку его можете поместить наверно
SELECT date_format( max(`date`), '%d.%m.%Y' )`date`
, `user`
, `descr`
, coalesce(sum(if( `type`='nal', `summ`, null )),'')`nal`
, coalesce(sum(if( `type`='beznal', `summ`, null )),'')`beznal`
, voobrazhaemoe_pole
FROM `charge`
WHERE `date` BETWEEN concat( CURDATE() -INTERVAL datediff( CURDATE(), '19700105' )%7 DAY, ' 00:00:00' )
AND concat( CURDATE() +INTERVAL 6-datediff( CURDATE(), '19700105' )%7 DAY, ' 23:59:59' )
GROUP BY if( substr( `descr`, 1, 5 )='Дог.№', 1, UUID() ) AS voobrazhaemoe_pole, `user`, `descr`
ORDER BY `date`
|
| |
|
|
|
|
|
|
|
для: Valick
(24.01.2013 в 20:27)
| | Какое еще воображаемое поле ? | |
|
|
|
|
|
|
|
для: oradev
(24.01.2013 в 20:15)
| | нет, формируется воображаемое поле, которое для строк с договорами принимает значение 1, а для остальных уникальный UUID | |
|
|
|
|
|
|
|
для: Valick
(24.01.2013 в 18:44)
| | Валик, что мне ваши слова на веру принимать что ли, извините, жизнь отучила, а где вы видите, что группировка будет по номерам договоров, я такого не вижу, а лишь вижу, что при определенном условии ( я писал выше) будет группировка по дате, на это указывает явно запись
Учитывая
SELECT date_format( max(`date`), '%d.%m.%Y' )`date`
|
| |
|
|
|
|
|
|
|
для: oradev
(24.01.2013 в 17:08)
| | опять вы спорите :)
запрос выберет для группировки все строки в которых встречается Дог.№
но группировка будет проходить не вся в куче, а именно по номерам договоров, т.е. Дог.№24 ну никак не сгруппируется с Дог.№25 | |
|
|
|
|
|
|
|
для: Valick
(24.01.2013 в 13:12)
| | ничего подобного | |
|
|
|
|