powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Непонятно работает ORDER BY MAX(Price) при GROUP BY
5 сообщений из 5, страница 1 из 1
Непонятно работает ORDER BY MAX(Price) при GROUP BY
    #38354245
nik_www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.


Имеется две таблицы: Categories - таблица категорий товаров, Items - товары.

Имеется следующий запрос (часть лишнего я из него удалил):
SELECT Items.Name, Items.Brand, Items.Param1, Items.Param2, [еще набор полей]
FROM Items INNER JOIN Categories ON Items.Category=Categories.id
GROUP BY Items.Name, Items.Brand, Items.Param1, Items.Param2
ORDER BY MAX(Items.Price) DESC

Тут я получаю уникальные группы товаров по полям Items.Name, Items.Brand, Items.Param1, Items.Param2. Дальше для каждой группы выполняю поиск товара, подходящего для нее:
SELECT *
FROM Items
WHERE Name='Имя ряда' AND Brand='Производитель' AND Param1='Характеристика 1' AND Param2='Характеристика 2'
GROUP BY Color
ORDER BY Price DESC

На сайте это выглядит так: есть блоки групп товаров, внутри каждого блока товары, принадлежащие данной группе. Данные запросы работают при сортировке по цене, т.е. группы должны сортироваться по максимальной цене товара в данной группе.
Проблема заключается в следующем: неправильно определяется эта максимальная цена - MAX(Items.Price). На сайте это выглядит так: группы имеют максильные цены в таком порядке 53, 46, 44, 47, 47, 43, 41, 43 и т.д. убивает, но не по порядку.

Не пойму, в чем проблема, вроде же должно нормально работать?
...
Рейтинг: 0 / 0
Непонятно работает ORDER BY MAX(Price) при GROUP BY
    #38354249
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nik_wwwНа сайте это выглядит так: группы имеют максильные цены в таком порядке 53, 46, 44, 47, 47, 43, 41, 43 и т.д. убивает, но не по порядку.

если коротко - то всем ровно "пофик" как это "выглядит на сайте", и что там в этом твоём пхп-е накрутили
в каком-нибудь МуСКЛ-клиенте (пхпАдмин, например) - отображается правильно ?
...
Рейтинг: 0 / 0
Непонятно работает ORDER BY MAX(Price) при GROUP BY
    #38354252
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nik_wwwДоброго времени суток.


Имеется две таблицы: Categories - таблица категорий товаров, Items - товары.

Имеется следующий запрос (часть лишнего я из него удалил):
Код: sql
1.
2.
3.
4.
SELECT Items.Name, Items.Brand, Items.Param1, Items.Param2, [еще набор полей]
FROM Items INNER JOIN Categories ON Items.Category=Categories.id
GROUP BY Items.Name, Items.Brand, Items.Param1, Items.Param2
ORDER BY MAX(Items.Price) DESC



Тут я получаю уникальные группы товаров по полям Items.Name, Items.Brand, Items.Param1, Items.Param2. Дальше для каждой группы выполняю поиск товара, подходящего для нее:
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM Items
WHERE Name='Имя ряда' AND Brand='Производитель' AND Param1='Характеристика 1' AND Param2='Характеристика 2'
GROUP BY Color
ORDER BY Price DESC



На сайте это выглядит так: есть блоки групп товаров, внутри каждого блока товары, принадлежащие данной группе. Данные запросы работают при сортировке по цене, т.е. группы должны сортироваться по максимальной цене товара в данной группе.
Проблема заключается в следующем: неправильно определяется эта максимальная цена - MAX(Items.Price). На сайте это выглядит так: группы имеют максильные цены в таком порядке 53, 46, 44, 47, 47, 43, 41, 43 и т.д. убивает, но не по порядку.

Не пойму, в чем проблема, вроде же должно нормально работать?
ааа, так 2-й запрос - это у тебя курсор (цикл) по результатам первого ?
так в 1-ом - нет условий из 2-ого, соответственно, и результаты получаются разные !
...
Рейтинг: 0 / 0
Непонятно работает ORDER BY MAX(Price) при GROUP BY
    #38354254
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112ааа, так 2-й запрос - это у тебя курсор (цикл) по результатам первого ?
так в 1-ом - нет условий из 2-ого, соответственно, и результаты получаются разные !
нее, не то ...
всё ещё более запущенно
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM Items
WHERE Name='Имя ряда' AND Brand='Производитель' AND Param1='Характеристика 1' AND Param2='Характеристика 2'
GROUP BY Color
ORDER BY Price DESC


вот из-за этого GROUP BY - в результат будет выбиратся совершенно произвольный Price
в SELECT-е нужен MAX(Items.Price)
...
Рейтинг: 0 / 0
Непонятно работает ORDER BY MAX(Price) при GROUP BY
    #38354339
nik_www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во второй запрос подставляются Items.Name, Items.Brand, Items.Param1, Items.Param2 из первого запроса (WHERE Name='Имя ряда' AND Brand='Производитель' AND Param1='Характеристика 1' AND Param2='Характеристика 2' - 'Имя ряда', 'Производитель', 'Характеристика 1', 'Характеристика 2' - результат первого запроса). 2й запрос идет в цикле по результату первого.
"GROUP BY Color" делаю, чтоб исключить повторяющиеся цвета товара. Похоже, тут теряю цены. Спасибо, проверю, подумаю как исправить.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Непонятно работает ORDER BY MAX(Price) при GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]