powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выбор записи по максимальному и минимальному значению из нескольких полей
16 сообщений из 16, страница 1 из 1
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638224
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Подскажите, пожалуйста, люди добрые, как отсортировать записи учитывая максимальное значение в одном поле + минимальное во втором?

Есть таблица:

CREATE TABLE `params` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`param1` int(11) NOT NULL,
`param2` int(11) NOT NULL,
`param3` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;


Нужно, чтобы результаты выводились учитывая максимальное значение param1 и минимальное param3, чтобы найти усреднение между этими полями и отсортировать по максимуму param1, но учитывая минимум param3. В идеале конечно было бы учитывать и минимальное значение param2, т.е. так: вывод максимума param1 учитывая минимум param2 и param3.

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

Пробовал так:

SELECT MAX( param1) AS price, param2, param3
FROM params
GROUP BY param3
ORDER BY price

SELECT *
FROM `params`
ORDER BY MAX(param1), MIN(param2), MIN(param3)


Буду очень признателен, кто поможет понять как составить запрос.

Благодарю!
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638284
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fresh-max,

приведите пример (4-10 строчек)
исходных данных и желаемого результата.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638339
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

Благодарю за реагирование!

Исходные данные:
4 3 1
1 2 5
6 1 6
5 4 2
5 5 2

Желаемый результат:
5 4 2 - потому что 5 максимум в param1, а 2 минимум в param3 и разница между param1 и param3 = 3
4 3 1 - потому что 4 максимум в param1, а 1 минимум в param3 и разница между param1 и param3 = 3
5 5 2 - потому что 5 максимум в param1, а 2 минимум в param3 и разница между param1 и param3 = 3
6 1 4 - потому что 6 максимум в param1, а 4 минимум в param3 и разница между param1 и param3 = 2
1 2 5 - потому что 1 максимум в param1, а 5 минимум в param3 и разница между param1 и param3 = 4
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638361
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fresh-max5 4 2 - потому что 5 максимум в param1, а 2 минимум в param3 и разница между param1 и param3 = 3
4 3 1 - потому что 4 максимум в param1, а 1 минимум в param3 и разница между param1 и param3 = 3
5 5 2 - потому что 5 максимум в param1, а 2 минимум в param3 и разница между param1 и param3 = 3Уже тут непонятно:
-"максимум пар1" - совпадает в 1 и 3 строках
-"минимум пар3" - совпадает в 1 и 3 строках
-разница между пар1 и пар3 - совпадает в 1 и 3 строках
Тем не менее между ними почему-то затесалась строка с другими значениями...
И вообще, максимум в пар1 - не 5, а 6. Да и минимум пар3 - не 2, а 1.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638387
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirfresh-max5 4 2 - потому что 5 максимум в param1, а 2 минимум в param3 и разница между param1 и param3 = 3
4 3 1 - потому что 4 максимум в param1, а 1 минимум в param3 и разница между param1 и param3 = 3
5 5 2 - потому что 5 максимум в param1, а 2 минимум в param3 и разница между param1 и param3 = 3Уже тут непонятно:
-"максимум пар1" - совпадает в 1 и 3 строках
-"минимум пар3" - совпадает в 1 и 3 строках
-разница между пар1 и пар3 - совпадает в 1 и 3 строках



"И вообще, максимум в пар1 - не 5, а 6." - это верно, но если учитывать разницу, то в строке 5 4 2 и 5 5 2 она 3, а в строке 6 1 6 - 5! соответственно строка 6 1 6 должна быть ниже, чем строки 5 4 2 и 5 5 2.

"Да и минимум пар3 - не 2, а 1." тут тоже верно, но так как в строке 5 4 2 парам1 5 и он больше чем в строке 4 3 1, а мне нужно сортировать по максимуму парам1, то строка 5 4 2 должна быть выше чем 4 3 1, так как разница у них между парам1 и парам 2 равная, но в строке 5 4 2 парам1 больше.

Я в желаемом результате ошибся в строке 6 1 4, должна быть 6 1 6.

Мне думается должен быть запрос на выявление макс. значения в парам1 и мин. в парам3, но вот как его правильно составить понять не могу.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638396
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fresh-max,

Запутался я что-то с примером, строка 616 должна наверно быть 611 вообще :))
Сообщение нельзя редактировать, а с ответом поспешил, прошу прощения.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638400
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжаем fresh-max"И вообще, максимум в пар1 - не 5, а 6." - это верно, но если учитывать разницу, то в строке 5 4 2 и 5 5 2 она 3, а в строке 6 1 6 - 5! соответственно строка 6 1 6 должна быть ниже, чем строки 5 4 2 и 5 5 2."в строке 5 4 2 и 5 5 2 она 3" - это, очевидно, разница между п1 и п3
"а в строке 6 1 6 - 5!" - а тут между чем и чем? 1 и 2? 2 и 3? ну всяко не 1 и 3
fresh-maxто строка 5 4 2 должна быть выше чем 4 3 1, так как разница у них между парам1 и парам 2 равная, но в строке 5 4 2 парам1 больше.теперь вы считаете разницу между 1 и 2, а до этого считали разницу между 1 и 3... ЯНХНП

ЗЫ.
1231-22-31-3=max1=max2=max3542123---431123---552033-+-6165-50+-+125-1-3-4---Вот хоть убей, никакой системы не вижу.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638416
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirпродолжаем

))

5 4 2 - разница между п1 и п3 = 3 и при этом п1 = 5 и он больше чем во 2-й строке
4 3 1 - разница между п1 и п3 = 3 и при этом п1 = 4, поэтому ниже 1-й строки, но выше 3-й строки, потому что во 2-й строке п3 = 1, а в 3-й п3 = 2
5 5 2 - разница между п1 и п3 = 3 и при этом п1 = 5
6 1 1 - разница между п1 и п3 = 5, поэтому это вариант еще ниже 3-й строки
1 2 5 - ну а этот вариант вообще последний, так как п1 = 1, а п3 = аж 5

Теперь вроде всё верно?
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638428
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fresh-maxразница между п1 и п3 = 3 и при этом п1 = 4, поэтому ниже 1-й строки, но выше 3-й строки, потому что во 2-й строке п3 = 1, а в 3-й п3 = 2стоп-стоп-стоп
с первой строкой вы сравниваете по п1
с третьей стрококй вы сравниваете по п3
это ***** как??!

Да плюс к тому
fresh-max5 4 2 - разница между п1 и п3 = 3 и при этом п1 = 5 и он больше чем во 2-й строке
4 3 1 - разница между п1 и п3 = 3 и при этом п1 = 4, поэтому ниже 1-й строки, но выше 3-й строки, потому что во 2-й строке п3 = 1, а в 3-й п3 = 2
5 5 2 - разница между п1 и п3 = 3 и при этом п1 = 5 а почему вы вот тут не дописали "и он больше чем во 2-й строке"? в чём отличие-то?
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638491
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,



"с первой строкой вы сравниваете по п1
с третьей стрококй вы сравниваете по п3"

Не, вообще во всех строках надо п1 сравнивать с п1 во всех строках на выявления максимума, но при этом еще сравнивать во всех строках п3 с п3 на выявление минимума.
Может это не выполнимая задача вообще?

"а почему вы вот тут не дописали "и он больше чем во 2-й строке"? в чём отличие-то?"

Допишу полный вариант тогда, думал не нужно объяснять эту строку:

5 4 2 - разница п1 и п3 = 3 и при этом п1 = 5 и он больше чем во 2-й строке у п1
4 3 1 - разница п1 и п3 = 3 и при этом п1 = 4, поэтому 2-я строка ниже 1-й строки, но выше 3-й строки, потому что во 2-й строке п3 = 1, а в 3-й п3 = 2
5 5 2 - разница п1 и п3 = 3 и при этом п1 = 5, но в этой строке п2 = 5, а это больше чем в 1-й и 2-й строке у п2
6 1 1 - разница п1 и п3 = 5, поэтому это вариант еще ниже 3-й строки
1 2 5 - ну а этот вариант вообще последний, так как п1 = 1, а п3 = аж 5

Вот не знаю, есть ли логика в этом, но я её вижу. :))

в строке 5 5 2 в процессе объяснения добавилось еще сравнение по п2))

6 1 1 - разница п1 и п3 = 5 - это лучшая строка, у неё еще и п2 = 1!
4 3 1 - разница п1 и п3 = 3 - уже менее, но лучше чем 3-я строка, потому что п2 больше чем в 1-й строке, но меньше чем в 3-й
5 4 2 - разница п1 и п3 = 3 - уже по-хуже, но не так сильно, как 4-я строка, потому что п2 у 4-й строки = 5
5 5 2 - разница п1 и п3 = 3 - хуже второго варианта, так как п2 = 5
1 2 5 - а эта строка самая последняя, потому что не зависимо от разницы между п1 и п3, п3 = 5, да еще и п1 = всего 1, а это самый худший вариант

Вот теперь вроде логику донёс.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638541
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fresh-maxразница п1 и п3 = 3 и при этом п1 = 4, поэтому 2-я строка ниже 1-й строки, но выше 3-й строки, потому что во 2-й строке п3 = 1, а в 3-й п3 = 2Те же яйца, вид сбоку (с) С тем же успехом их можно расположить так
542
431
552
и аргументировать абсолютно теми же словами:
разница п1 и п3 = 3 и при этом п1 = 4, поэтому 2-я строка ниже 1-й строки, но выше 3-й строки, потому что во 2-й строке п3 = 1, а в 3-й п3 = 2
Думайте дальше


fresh-max5 5 2 - разница п1 и п3 = 3 и при этом п1 = 5, но в этой строке п2 = 5, а это больше чем в 1-й и 2-й строке у п2
6 1 1 - разница п1 и п3 = 5, поэтому это вариант еще ниже 3-й строки
1 2 5 - ну а этот вариант вообще последний, так как п1 = 1, а п3 = аж 5Жесть какая :)
В первых трёх строках у вас п1-п3=3. В четвёртой п1-п3=5, поэтому (вы пишете) она ниже. Кагбэ логично предположить, что где-то должна стоять сортировка по (п1-п3) desc.
Однако тут же мы видим, что строка под номером пять имеет (п1-п3)=-4. Да при деск-сортировке она вообще первой должна быть! :)
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638543
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirрасположить так
542
431
552ну то есть вот так:
552
431
542
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638549
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не деск-сортировка, а аск, но как ни назови, сортировать должно в одну сторону, а у вас получается сначала 3, потом 5, а потом -4.
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638591
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Тут не получится только по DESC или ASC, пробовал - не выходит, получается только одному из столбцов сортировать, а нужно по 3-м, видимо.

Последний пример который приводил подробно уже описывает то, что нужно по-идее.

Вот этот вариант:

6 1 1 - разница п1 и п3 = 5 - это лучшая строка, у неё еще и п2 = 1!
4 3 1 - разница п1 и п3 = 3 - уже менее, но лучше чем 3-я строка, потому что п2 больше чем в 1-й строке, но меньше чем в 3-й
5 4 2 - разница п1 и п3 = 3 - уже по-хуже, но не так сильно, как 4-я строка, потому что п2 у 4-й строки = 5
5 5 2 - разница п1 и п3 = 3 - хуже второго варианта, так как п2 = 5
1 2 5 - а эта строка самая последняя, потому что не зависимо от разницы между п1 и п3, п3 = 5, да еще и п1 = всего 1, а это самый худший вариант

:))
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638780
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fresh-max6 1 1 - разница п1 и п3 = 5 - это лучшая строка, у неё еще и п2 = 1!
4 3 1 - разница п1 и п3 = 3 - уже менее, но лучше чем 3-я строка, потому что п2 больше чем в 1-й строке, но меньше чем в 3-й
5 4 2 - разница п1 и п3 = 3 - уже по-хуже, но не так сильно, как 4-я строка, потому что п2 у 4-й строки = 5
5 5 2 - разница п1 и п3 = 3 - хуже второго варианта, так как п2 = 5
order by p1-p3 desc, p2, p1
fresh-maxпотому что не зависимо от разницы между п1 и п3, п3 = 5, да еще и п1 = всего 1, а это самый худший варианта вот тут хз что вы имели в виду, но в мой вариант это всё равно укладывается
...
Рейтинг: 0 / 0
выбор записи по максимальному и минимальному значению из нескольких полей
    #38638998
fresh-max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Ура! :) Практически то, что требовалось! :))
Не додумался сделать order by p1-p3.


Благодарю!!!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выбор записи по максимальному и минимальному значению из нескольких полей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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