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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Алгоритм группировки

Сообщения:  [1-8] 

 
 автор: Trianon   (17.07.2009 в 15:56)   письмо автору
 
   для: 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 = 'номер отделения' 

И никаких группировок.

  Ответить  
 
 автор: adpakm   (17.07.2009 в 15:38)   письмо автору
 
   для: Trianon   (17.07.2009 в 13:31)
 

Согласен, резонное замечание.

Пишу запрос выбираю счета, у счетов есть доппараметры, которые в других таблицах, меня интересуют только 2, трабла в том что они в одном поле:
айди счет
-----------------------
111 1234567890


владелец доппараметр значение
---------------------------------------------------------------------
111 тип продукта 333
111 номер отделения 123

вывести надо так:
счет тип продукта отделение бонус
---------------------------------------------------------------------------------------
1234567890 333 123 ????

задача решалась выборкой всех допреквизитов этого счета и, в зависимости от типа, распределяло их. Но в группировке последние значение не всегда было тип продукта,а иногда и номер отделения. так вот бонус привязан к типу продукта, чтобы мне его выбрать, мне надо чтобы группировка "в конце" содержала "тип продукта" для прикрутки бонуса.
мах и мин не проходят, так как нет уверености в значении.

Сама задача-то уже решена, просто стало интересно можно ли было все таки сделать так.

Спасибо.

  Ответить  
 
 автор: Trianon   (17.07.2009 в 15:17)   письмо автору
 
   для: oradev   (17.07.2009 в 14:58)
 

Моей?
Я вообще не считаю группировку отдельной процедурой.

Если Вы о запросе (17.07.2009 в 13:31), то выбрано будет последнее (лексикографически) имя.

  Ответить  
 
 автор: oradev   (17.07.2009 в 14:58)   письмо автору
 
   для: Trianon   (17.07.2009 в 13:06)
 

Объясните смысл вашей группировки ?

  Ответить  
 
 автор: Trianon   (17.07.2009 в 13:31)   письмо автору
 
   для: adpakm   (17.07.2009 в 13:25)
 

>согласен! но бывают в жизни исключенья! :)

Ставя так вопрос, Вы должны объяснить, по какому правилу предпочитаете пупкина, а не васю.

К примеру.
SELECT account, MAX(name) FROM tbl GROUP BY account

  Ответить  
 
 автор: adpakm   (17.07.2009 в 13:25)   письмо автору
 
   для: Trianon   (17.07.2009 в 13:06)
 

>А в MSSQL Вы бы как запрос написали? :-)
Не понял вопроса!?
суть не в том как бы я сделал в мс скл.
сам запрос я переделал по другому алгоритму и все заработало.
суть в том, что мускул пропускает такое и теперь раз уж такое дело, мне интересно, как оно работает?

>GROUP BY без агрегатных функций - ересь мерзкая.
согласен! но бывают в жизни исключенья! :)
если бы я нашел ответ на поставленный вопрос, то у меня бы получилось весьма неординарное решение.

  Ответить  
 
 автор: Trianon   (17.07.2009 в 13:06)   письмо автору
 
   для: adpakm   (17.07.2009 в 11:27)
 

А в MSSQL Вы бы как запрос написали? :-)
GROUP BY без агрегатных функций - ересь мерзкая.

  Ответить  
 
 автор: adpakm   (17.07.2009 в 11:27)   письмо автору
 
 

Итак, коллеги,

Запрос большой и утомительный, посему упрощаю задачу по минимуму:
есть таблица table:
account name
------------------------------------------------
111111 vasya
111111 pupkin


даем запрос:
select * from table group by account
получаем:
111111 vasya.

Я уже молчу, что мускул позволяет группировать по негруппировочным полям (ms sql себе таких вольностей не позволяет), меня такой функционал устраивает. Но проблемка в чем, а как мне вывести так, чтобы после группировки я получил
111111 pupkin.

то есть изменить последний нейм который мускул берет для группировки.
Кто сталкивался подскажите, пожалуйста.

  Ответить  

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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