![]() |
|
Модераторы: skyboy |
![]()
|
|
| zeltek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 10.1.2007 Где: Геническ (Украина ) Репутация: нет Всего: нет |
Вообщем есть таблица с 4мя полями, к примеру:
марка цвет год цена ВАЗ бел 1900 150 ВАЗ бел 1900 151 ВАЗ бел 1900 200 ВАЗ бел 2000 150 нужно организовать выборку с 5ю полями: марка цвет год цена (с) цена (до) ВАЗ бел 1900 150 151 ВАЗ бел 2000 200 ВАЗ бел 2000 150 т.е. выбираюся записи с группировкой по марке,цвету и году, а также мин. и макс. цены по этим аттрибутам а теперь загвоздка: если марка, цвет и год идентичны, а список цен примерно такой :150,151,152 то цена с должна быть 150, а цена до 152 а если список такой: 150,151,152,200 то должно быть две записи : первая - первые три поля теже ценас - 150 ценадо 152, вторая первые три поля теже, ценас -200 ценадо - 0 т.е. пока цена увеличивается на 1, цикл продолжается, а если больше чем на 1, то выводится строка с ценойдо равной последней цене и цикл начинается заново... надеюсь идея понятна... |
|||
|
||||
| lafisques |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.6.2012 Репутация: нет Всего: нет |
Покажите запрос, который составили и не работает. Вообще вот такая конструкция вполне себе должна работать:
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Нет Понятна... Для MySQL я прредлагаю хранимую процедуру. Открываете курсор с соотв. сортировкой и в цикле обрабатываете записи, сливая найденные диапазоны в выходной поток. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| zeltek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 10.1.2007 Где: Геническ (Украина ) Репутация: нет Всего: нет |
в том то и дело, что мне не нужно просто максимальное и минимальное значение
если делать как Вы предлагаете, то получится такая выборка из примера первого сообщения: ВАЗ бел 1900 150 200 ВАЗ бел 2000 150 а нужно: ВАЗ бел 1900 150 151 ВАЗ бел 1900 200 ВАЗ бел 2000 150 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Akina, с помощью трюка с переменными MySql можно ли организовать расчет накапливающей суммы?
Суть идеи така: Селф лефт джойн по правая цена = левая цена -1, считаем накапливающей суммой nullы слева - получаем критерий группировки. на оракле это выглядило бы както то так:
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Zloxa, MySQL будет долго таращить глаза на sum() over ()... так не получится.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
||||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
еще, как вариант, вычитать из цены порядковый номер записи в группе отсортированной по цене, тоже, наверное можно замутить как-то, используя переменные mysql.
Этот способ кажется проще, не требует селф джойна, но может дать сбой, в случае, если в пределах группы цены не уникальны, потому, перед расчетом порядкового номера желательно бы сгруппироваться.
Добавлено @ 10:53
Я знаю что он не держит синтаксис, я просто предлагаю подход. Этот синтаксический элемент реализует расчет накапливающей суммы. Я не знаю, можно ли его реализовать используя переменные MySQL. Я знаю ты с ними работал, какие-то трюки с ними демонстрировал, потому и обращаю вопрос к тебе. Быть может как-то можно исхитриться... Добавлено @ 10:58 Вот такой подход сто пудов реализуем на mysql после адаптации синтаксиса. Но имеет малую производительность и требует уникальности цены в пределах группы
Добавлено через 11 минут и 27 секунд можно использовать count(distinct t2.price), чтоб избавиться от этого требования Это сообщение отредактировал(а) Zloxa - 15.6.2012, 10:59 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||||
|
|||||||
| zeltek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 10.1.2007 Где: Геническ (Украина ) Репутация: нет Всего: нет |
всем спасибо, решил проблему непосредственно скриптом php
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |