SELECT @i := @i + 1 AS num, фрукт, summ FROM ( SELECT фрукт, SUM(ккал) summ FROM корзина GROUP BY фрукт ORDER BY 2 DESC LIMIT 0, 10 ) x, ( SELECT @i:=0) z ORDER BY 3 DESC Есть код который упорядочивает все фрукты по суммарной ккалорийности сверху вниз - внизу наглядно: 1 Яблоко 868 2 Банан 711 3 Клубника 555 4 Хурма 12 Скрин таблицы прилагаю. Задача: Получить num (он никак не записан в таблице ... num'ирация происходит только в момент выполнения запроса который выше) по полю 'фрукт' ... Например давайте получим только num Хурмы.
либо я чтото непонимаю.... вам же нужен просто порядковый номер этого фрукта в списке отсортированном по сумме калорий? если да, чем неустраивает этот вариант? только впишите там Хурму вместо Банана https://php.ru/forum/threads/summa-znachenij-ne-unikalnogo-parametra.76943/#post-600165
Вы шили тогда задачу которую я вроде еще не ставил .. но это работает спасибо. Есть еще одна задача если позволите. Нужно у запросом вывести какой у хурмы рейтинг по Витаминам среди всех и какой у Хурмы рейтинг по ккалориям среди всех.. поможете?
SELECT cc.rank, cc.other FROM ( SELECT @i:=@i+1 as rank, other, c.fruit FROM ( SELECT fruit, SUM(kkal) other FROM `fruits` GROUP BY fruit ORDER BY 2 DESC ) c ,(select @i:=0) AS z ) cc WHERE cc.fruit='banan'; --- Добавлено --- Решение.. спасибо вы мне помогли чуть лучше понять сложные запросы. Однако нужно еще получить витамны и номер в рейтинге их.. вместе с ккалориями и рейтингом
ага забежал в перед значит.. "нужно еще получить витамны и номер в рейтинге их.. вместе с ккалориями и рейтингом" - поможете с этим как это сделать в 1 запросе?:
Я хочу на основе имеющегося запроса получить нужный мне результат немного доработав его.. не скрою меня восхитило то что много чего можно получить с помощью одного запроса, без обработки программы и дополнительных запросов.. я постараюсь подтянуть свои знания mysql т.к это реально крутая штука.. но если б мне помогали в этом форумчане мне было бы куда проще и интересней.. думаю мне стоит создать тему с более точной задачей и предлагать свою идею реализации.
Отдельную тему создавать не стоит, а вот свою реализацию создавать можно и нужно. Не стоит сходить с ума и пытаться все задачи решить одним запросом. Другое дело, что когда для решения поставленной задачи её величество MySQL постоянно приходится целовать в жопу создавая монструозные шестнадцати этажные запросы, то проблема скорее всего в архитектуре БД. И кстати как бы тот или иной ТС не маскировал задачу под учебную, со стороны всё видно. И совершенно непонятно как можно считать дураками тех к кому пришёл за советом.
Я ничего не маскирую я решаю задачу для своего проекта, проблема в том что я не силен в mysql по этому и обратился на форума чтоб мне показали как решается подобного рода задачи.
Если в таблице нет готового поля "позиция в рейтинге", то с помощью сортировки и переменной можно его вычислить -- как тебе уже подсказали. Но не получится вычислить позиции по нескольким разным критериям, ибо сортировка в запросе только одна!