|
|
|
|
|
для: adpakm
(17.07.2009 в 15:38)
| |
SELECT a.id, a.amount, p.value AS ProductType, d.value AS DepNo , '????' AS bonus
FROM
account a
LEFT JOIN prefs p ON a.id = p.id AND p.AdvParam = 'тип продукта'
LEFT JOIN prefs d ON a.id = d.id AND d.AdvParam = 'номер отделения'
|
И никаких группировок. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 13:31)
| | Согласен, резонное замечание.
Пишу запрос выбираю счета, у счетов есть доппараметры, которые в других таблицах, меня интересуют только 2, трабла в том что они в одном поле:
айди счет
-----------------------
111 1234567890
владелец доппараметр значение
---------------------------------------------------------------------
111 тип продукта 333
111 номер отделения 123
вывести надо так:
счет тип продукта отделение бонус
---------------------------------------------------------------------------------------
1234567890 333 123 ????
задача решалась выборкой всех допреквизитов этого счета и, в зависимости от типа, распределяло их. Но в группировке последние значение не всегда было тип продукта,а иногда и номер отделения. так вот бонус привязан к типу продукта, чтобы мне его выбрать, мне надо чтобы группировка "в конце" содержала "тип продукта" для прикрутки бонуса.
мах и мин не проходят, так как нет уверености в значении.
Сама задача-то уже решена, просто стало интересно можно ли было все таки сделать так.
Спасибо. | |
|
|
|
|
|
|
|
для: oradev
(17.07.2009 в 14:58)
| | Моей?
Я вообще не считаю группировку отдельной процедурой.
Если Вы о запросе (17.07.2009 в 13:31), то выбрано будет последнее (лексикографически) имя. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 13:06)
| | Объясните смысл вашей группировки ? | |
|
|
|
|
|
|
|
для: adpakm
(17.07.2009 в 13:25)
| | >согласен! но бывают в жизни исключенья! :)
Ставя так вопрос, Вы должны объяснить, по какому правилу предпочитаете пупкина, а не васю.
К примеру.
SELECT account, MAX(name) FROM tbl GROUP BY account | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 13:06)
| | >А в MSSQL Вы бы как запрос написали? :-)
Не понял вопроса!?
суть не в том как бы я сделал в мс скл.
сам запрос я переделал по другому алгоритму и все заработало.
суть в том, что мускул пропускает такое и теперь раз уж такое дело, мне интересно, как оно работает?
>GROUP BY без агрегатных функций - ересь мерзкая.
согласен! но бывают в жизни исключенья! :)
если бы я нашел ответ на поставленный вопрос, то у меня бы получилось весьма неординарное решение. | |
|
|
|
|
|
|
|
для: adpakm
(17.07.2009 в 11:27)
| | А в MSSQL Вы бы как запрос написали? :-)
GROUP BY без агрегатных функций - ересь мерзкая. | |
|
|
|
|
|
|
| Итак, коллеги,
Запрос большой и утомительный, посему упрощаю задачу по минимуму:
есть таблица table:
account name
------------------------------------------------
111111 vasya
111111 pupkin
даем запрос:
select * from table group by account
получаем:
111111 vasya.
Я уже молчу, что мускул позволяет группировать по негруппировочным полям (ms sql себе таких вольностей не позволяет), меня такой функционал устраивает. Но проблемка в чем, а как мне вывести так, чтобы после группировки я получил
111111 pupkin.
то есть изменить последний нейм который мускул берет для группировки.
Кто сталкивался подскажите, пожалуйста. | |
|
|
|
|