Нужно посчитать "ккал"... есть фрукты нам нужно получить у какого фрукта больше всего "ккал" в таблице.. (В СУММЕ) Мы должны получить такой список (по порядку от большего к меньшему): 1.Яблоко - 462+345+11+50 = 868 2.банан - 11+700 = 711 3.Клубника 555 = 555 4.Хурма 12 = 12 (НУЖНО ПОЛУЧИТЬ ТОЛЬКО СУММУ ВВЕРХУ САМОЕ БОЛЬШЕ ЗНАЧЕНИЕ) помогите пожалуйста отправить правильны{й\е} запрос чтоб получить что требуется. и еще 1 вопрос - Нужно получить какой по списку банан по сумме "ккал".
SELECT @i := @i + 1 AS num, фрукт,SUM(ккал) FROM корзина, (select @i:=0) AS z GROUP BY фрукт ORDER BY MAX(ккал) DESC LIMIT 0, 10; в num столбце как будто случайные значения.. дайте пример правильного вывода и сортировки вывода ... господа мы совсем близки к цели)
развивая ваш вариант PHP: SELECT cc.rank FROM ( SELECT @i:=@i+1 as rank, c.fruit FROM ( SELECT fruit, SUM(kkal) FROM `fruits` GROUP BY fruit ORDER BY 2 DESC ) c ,(select @i:=0) AS z ) cc WHERE cc.fruit='banan';
для начала первый запрос: Код (Text): SET @i:=0; второй запрос: Код (Text): SELECT @i:=@i+1 num, fruit, SUM(kkal) sk FROM `fruits` GROUP BY `fruit` ORDER BY sk DESC если банан надо выбрать отдельно, то суём второй запрос в конструкцию FROM и добавляем условие на банан
SELECT * FROM ( SELECT @i:=@i+1 num, fruit, SUM(kkal) sk FROM `fruits` GROUP BY `fruit` ORDER BY sk DESC ) c WHERE c.fruit = 'банан';
я извращенец) Код (Text): SET @i:=0; SELECT cc.* FROM ( SELECT @i:=@i+1 num, c.* FROM ( SELECT fruit, SUM(kkal) sk FROM `fruits` GROUP BY `fruit` ORDER BY sk DESC ) c ) cc WHERE cc.fruit = 'банан';
SELECT @i := @i + 1 AS num, фрукт, summ FROM ( SELECT фрукт, SUM(ккал) summ, MAX(ккал) maxx FROM корзина GROUP BY фрукт ORDER BY MAX(ккал) DESC LIMIT 0, 10 ) x, ( SELECT @i:=0) z ORDER BY maxx DESC сортировка summ должны быть по убыванию.. [U:1:857132995] - это представим что один из фруктов.. и остальное тоже.. 1 [U:1:857132995] 3212 2 [U:1:883969910] 3594 3 [U:1:216043827] 4807 - это самое большое число.. 4 [U:1:232151095] 2098 5 [U:1:147049989] 1432 6 [U:1:894988104] 1216 7 [U:1:871774431] 764 8 [U:1:35551385] 1228 9 [U:1:85769023] 546 10 [U:1:413185576] 368 Нужно чтоб было все по убыванию...
вы много что написали что я и не догнал какое решение на ваш взгляд лучше, продублируйте пожалуйста. --- Добавлено --- SET @i:=0; SELECT @i:=@i+1 num, steamid, SUM(cmd_time) sk FROM `227_27015` GROUP BY `steamid` ORDER BY sk DESC Работает но нумерация все равно не правильная.... 110 [U:1:216043827] 4807 57 [U:1:883969910] 3594 95 [U:1:857132995] 3212 36 [U:1:232151095] 2098 93 [U:1:147049989] 1877 30 [U:1:871774431] 1332 35 [U:1:35551385] 1228 88 [U:1:894988104] 1216 20 [U:1:75847262] 1101 161 [U:1:293827067] 685 176 [U:1:2105087] 610 10 [U:1:85769023] 546 194 [U:1:325646804] 484
SET @i:=0; SELECT @i:=@i+1 num, c.* FROM (SELECT fruit, SUM(kkal) sk FROM `fruits` GROUP BY `fruit` ORDER BY sk DESC ) c вот так должно работать, лимит если нужен внутри добавь
SELECTcc.* FROM( SELECT @i := @i +1 num, c . * FROM ( SELECT steamid, SUM( cmd_time ) sk FROM `227_27015` GROUP BY `steamid` ORDER BY sk DESC )c)cc WHEREcc.steamid='[U:1:871774431]' тут что-то работает только пока непонятно что... cmd_time (это ккал в примере) .. (steamid - это фрукт) 227_27015 - это название таблицы... Нужно сначала получить первые 10 лучших значений ... как это сделать пока нет решения.. все работают не корректно.. --- Добавлено --- не корректно работает ... нужно еще и ссумировать все значения выбранного ключа... fruit (яблок много) калории у каждого разные .. эти калории нужно проссумировать и на основе суммы уже стоит список..
я думал у нас еще есть время... оказывается ОНИ УЖЕ ЗДЕСЬ если давать такие 227_27015 имена таблицам и если хранить такие [U:1:871774431] значения, то естественным образом через некоторое время станет "ничего непонятно", а потом и вовсе не иначе как с заклинаниями код писать крепяй дамп таблицы сюды, база то хоть MySQL?
А вы думали БД для того чтоб бананы да яблоки считать? разумеется будут данные различного виде - это не имеет никакого значения! Рения корректноко к сожалению нет(
Позвольте я вам еще 1 раз обозначу задачу на примере .. дам пример как выглядит таблица сама по себе и дам пример какой нам нужен вывод.. Таблица сама по себе выглядит так: steamid cmd_time [U:1:456] 90 [U:1:123] 40 [U:1:234] 200 [U:1:234] 20 [U:1:345] 84 [U:1:456] 30 [U:1:123] 40 Вывод должен быть таким: 1. [U:1:234] 220 2. [U:1:456] 120 3. [U:1:345] 84 4. [U:1:123] 80 Боже дай мне ума а вам терпения xD))))