Я задавал похожий вопрос в прошлом, но не совсем понял, что мне нужно, вот старый вопрос
Как получить идентификатор строк, которые имеют MAX и MINзначения в SQL
Что мне нужно сделать, это получить набор данных, который сгруппировал все элементы с одинаковым полем item
в базе данных, но убедиться, что набор данных выводит подробности, относящиеся кконкретный идентификатор элемента, так что порядок группировки определенным образом.(в моем случае мне нужно сделать заказ либо по totalStock
полю, либо price
, если totalStock
, то по порядку desc
, если price
, по порядку asc
.
Я думаю что этот SO вопрос отвечает на мой вопрос лучше, но я не понимаю Joins
боюсь
MySQL упорядочить результаты в GROUP BY
Вот пример того, где я нахожусь:
"SELECT * FROM (select *, count(id) as Variants, sum(totalStock) as sumTotalStock
FROM `products` WHERE id > 0 AND `display`='1'
GROUP BY item ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END DESC)
AS unknownVar
ORDER BY sumTotalStock"
Мое потерянное понимание SQL нацелено на получение внутреннего набора результатов из моей базы данных, сгруппированной по item
с группировкой, упорядоченной по totalStock
если totalStock > 0
или price
в противном случае. Этот внутренний результирующий набор затем упорядочивается по sumTotalStock
.
Важный бит
ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END
Это дает мне две проблемы.
1) какой-то странный вывод, пропущен какой-то контент, который должен отображаться.
2) Кроме того, мне нужно иметь возможность изменить порядок сортировки
ORDER BY CASE WHEN totalStock > 0 *DESC* THEN totalStock ELSE price *ASC* END
сastrix'd DESC
и ASC
не работают, кажется, мне нужно поставить DESC
в конце оператора ORDER BY
, но тогда он упорядочивает DESC
в eitheСлучай неправильный.
Учитывая две вышеупомянутые проблемы, я не уверен, что это вообще-то работает!
Я провел большую часть дня и весь вечер на этомтеперь с Google и различными вопросами SO, но я боюсь, что я сдался и должен был опубликовать еще один!
Если кто-нибудь мог бы опубликовать мне какой-нибудь код, который бы сортировал это, я был бы вечно благодарен!
Я использую базу данных MySQL, но столбцы totalStock
и price
являются числовыми во всех случаях, а item
- это поле varChar
.Как только я смогу работать с этими полями, я смогу извлечь все остальное, что мне нужно, так что, надеюсь, вам не нужно больше, чем это, чтобы указать мне правильное направление?