У меня 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 для всех этих полей одновременно?
Любая помощь приветствуется. Спасибо, любезно.
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
Вы можете объединить все поля и упорядочить их так:
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