Примите во внимание значения нескольких столбцов в зависимости от доступности ORDER BY в MySQL.

У меня 10 ценовых категорий.

Я закодировал все, чтобы в поле цены отображалась правильная цена в зависимости от наличия. Эта часть работает отлично.

Но я не знаю, как установить ORDER BY в запросе, чтобы все поля цен учитывались перед сортировкой.

У меня есть эти поля:

'price1`, 'price2`, 'price3`, 'price4`, 'price5`, 'price6`, 'price7`, 'price8`, 'price9`, 'price10`

Мой текущий запрос выглядит так:

SELECT * FROM vehicles WHERE `to`='$to' ORDER BY `price1`;

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

Я также попробовал:

SELECT * FROM vehicles WHERE `to`='$to' ORDER BY `price1`, `price2`, `price3`, `price4`, `price5`, `price6`, `price7`, `price8`, `price9`, `price10`;

который потерпел неудачу, очевидно.

Как я могу использовать ORDER BY для всех этих полей одновременно?

Любая помощь приветствуется. Спасибо, любезно.

2

Решение

SELECT * FROM vehicles WHERE `to`='$to' ORDER BY GREATEST(`price1`, `price2`, `price3`, `price4`, `price5`,`price6`,`price7`, `price8`, `price9`, `price10`) DESC

Выше следует упорядочить от наибольшего значения, найденного в любом из столбцов «цена», вплоть до наименьшего значения наибольшего столбца строки.

Скажем, у вас есть стол

 == Table structure for table test

|------
|Column|Type|Null|Default
|------
|id|int(11)|No|
|price1|int(11)|No|
|price2|int(11)|No|
|price3|int(11)|No|
== Dumping data for table test

|1|10|20|10
|2|30|10|10
|3|100|20|10
|4|10|10|60

Запрос

SELECT * FROM `test` ORDER BY GREATEST(`price1`, `price2`, `price3`) DESC

Будет выходной

== Dumping data for table test

|3|100|20|10
|4|10|10|60
|2|30|10|10
|1|10|20|10
2

Другие решения

Вы можете объединить все поля и упорядочить их так:

select price1 from vehicles WHERE to='$to' union all
select price2 from vehicles WHERE to='$to' union all
select price3 from vehicles WHERE to='$to' union all
select price4 from vehicles WHERE to='$to' union all
select price5 from vehicles WHERE to='$to'
order by price1
1

По вопросам рекламы [email protected]