2010-11-28 2 views
1

У меня есть следующее утверждение. Результаты возвращаются, но записи не сортируются. Что я делаю не так?, заказывая это заявление

SELECT * 
FROM (
SELECT name, date, SUM(volume) AS sumVolume, SUM(value) AS sumValue 
FROM table 
WHERE id = 12 
) AS TempTable 
ORDER BY date DESC 

ответ

0

Этот запрос не будет работать так, как вы планировали. Использование SUM (которое является функцией AGGREGATE) в вашей производной таблице даст вам точную ОДНУЮ строку назад - если вы не начинаете GROUP BY другой столбец.

В вашем примере, даже если бы вы группировали id, вы все равно получали бы только одну строку (это потому, что вы группировали бы по одному идентификатору). Измените оператор WHERE, чтобы включить больше идентификаторов и сгруппировать их в производной таблице.

Также обратите внимание на MySQL manual на различные функции агрегата, чтобы получить представление о том, что они делают.

С уважением

EDIT
Поскольку требования Ор имеют несколько прояснится, я постараюсь помочь ему с его запросом:

SELECT x.name, x.date, y.vol, y.val 
    FROM table AS x, 
     (SELECT MAX(date) AS date, SUM(volume) AS vol, SUM(value) AS val 
      FROM table 
     WHERE id = 12) AS y 
WHERE x.id = 12, 
    AND x.date = y.date 
+0

Я хочу только 1 строку назад ... самое последнее имя и сумму значения и суммы тома – 2010-11-28 14:14:01

0

Я считаю, что это то, что вы ищете:

SELECT * 
FROM (
    SELECT name, date, SUM(volume) AS sumVolume, SUM(value) AS sumValue 
    FROM table 
    WHERE id = 12 
    GROUP BY date 
) AS TempTable 
ORDER BY TempTable.date DESC 

Это даст вам сумму объема и стоимости за каждый день, а затем упорядочить результаты для вас дня.

Предыдущая версия без «группы по» не дает вам суммы по датам правильно во многих обстоятельствах.

Использование ORDER BY TempTable.date во внешнем заявлении select разъясняет, что то, что вы хотите представить в порядке даты, является результатом внутреннего запроса.

+0

я должен уточнить. Я просто хочу вернуть 1 строку, которая имеет самое последнее имя человека И сумму всего тома и сумму всех значений. – 2010-11-28 14:10:20

Смежные вопросы