За последние 24 часа нас посетили 17276 программистов и 1192 робота. Сейчас ищут 1277 программистов ...

Получит 'num' конкретного 'фрукт' пожалуйста внимательно читайте условие.

Тема в разделе "MySQL", создана пользователем Naykon, 24 май 2019.

  1. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    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 Хурмы.
     

    Вложения:

    • admin_1 (1).jpg
      admin_1 (1).jpg
      Размер файла:
      81,8 КБ
      Просмотров:
      4
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    зачем плодить темы?
    вчера все разжевали с примерами. я дал, там, рабочий вариант. что неустраивает?
     
  3. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Все устраивает спасибо вам помогите с этой)
    это совершенно другая задача не находите?
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    либо я чтото непонимаю....
    вам же нужен просто порядковый номер этого фрукта в списке отсортированном по сумме калорий?
    если да, чем неустраивает этот вариант? только впишите там Хурму вместо Банана
    https://php.ru/forum/threads/summa-znachenij-ne-unikalnogo-parametra.76943/#post-600165
     
  5. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Вы шили тогда задачу которую я вроде еще не ставил .. но это работает спасибо. Есть еще одна задача если позволите.
    upload_2019-5-24_14-39-58.png

    Нужно у запросом вывести какой у хурмы рейтинг по Витаминам среди всех и какой у Хурмы рейтинг по ккалориям среди всех.. поможете?
     
  6. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    1. SELECT cc.rank, cc.other FROM (
    2. SELECT @i:=@i+1 as rank, other, c.fruit
    3. FROM (
    4. SELECT fruit, SUM(kkal) other
    5. FROM `fruits`
    6. GROUP BY fruit
    7. ORDER BY 2 DESC
    8. ) c
    9. ,(select @i:=0) AS z
    10. ) cc
    11. WHERE cc.fruit='banan';
    --- Добавлено ---
    Решение.. спасибо вы мне помогли чуть лучше понять сложные запросы.

    Однако нужно еще получить витамны и номер в рейтинге их.. вместе с ккалориями и рейтингом
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Как это не ставил.
    а это в той теме кто написал?
     
  8. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    ага забежал в перед значит.. "нужно еще получить витамны и номер в рейтинге их.. вместе с ккалориями и рейтингом" - поможете с этим как это сделать в 1 запросе?:
     
  9. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Скажите то что я затеял вообще реально сделать или все молчат потому что не знают?...
     
  10. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Naykon, все молчат потому, что потеряли интерес.
     
  11. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Я хочу на основе имеющегося запроса получить нужный мне результат немного доработав его.. не скрою меня восхитило то что много чего можно получить с помощью одного запроса, без обработки программы и дополнительных запросов.. я постараюсь подтянуть свои знания mysql т.к это реально крутая штука.. но если б мне помогали в этом форумчане мне было бы куда проще и интересней.. думаю мне стоит создать тему с более точной задачей и предлагать свою идею реализации.
     
  12. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Отдельную тему создавать не стоит, а вот свою реализацию создавать можно и нужно. Не стоит сходить с ума и пытаться все задачи решить одним запросом. Другое дело, что когда для решения поставленной задачи её величество MySQL постоянно приходится целовать в жопу создавая монструозные шестнадцати этажные запросы, то проблема скорее всего в архитектуре БД.
    И кстати как бы тот или иной ТС не маскировал задачу под учебную, со стороны всё видно. И совершенно непонятно как можно считать дураками тех к кому пришёл за советом.
     
    #12 Valick, 25 май 2019
    Последнее редактирование: 25 май 2019
  13. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Я ничего не маскирую я решаю задачу для своего проекта, проблема в том что я не силен в mysql по этому и обратился на форума чтоб мне показали как решается подобного рода задачи.
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям

    Если в таблице нет готового поля "позиция в рейтинге", то с помощью сортировки и переменной можно его вычислить -- как тебе уже подсказали. Но не получится вычислить позиции по нескольким разным критериям, ибо сортировка в запросе только одна!