Текущий архив: 2007.07.08;
Скачать: CL | DM;
Вниз
Помогите с запросом MYSQL ... Найти похожие ветки
← →
sholomgf (2007-04-10 23:27) [0]Здравствуйте! Есть таблица. В ней 2 столбца: field1, field2.
Забиты к примеру значения:
field1 field2
www 1
xxx 3
xxx 2
xxx 1
www 2
В результате запроса надо получить
www 3
xxx 6
Тоесть надо сумму по второму полю собрать для уникальных значений из первого
Перепробовал множество запросов с SUM. Ничего правильного не получается. Очень надеюсь на вашу помощь!
← →
Johnmen © (2007-04-11 09:37) [1]Читать GROUP BY в букваре по SQL.
← →
boristt (2007-04-11 09:55) [2]SELECT field1, SUM(field2) FROM table GROUP BY 1
← →
boristt (2007-04-11 09:56) [3]А в общем Johnmen прав. Сначала синтаксис SQL выучи
← →
Jan1 (2007-04-11 09:56) [4]
> Читать GROUP BY в букваре по SQL.
>
не поможет. так как
> Перепробовал множество запросов с SUM
Явный игнор советов, которые ему сервер давал.
← →
Jan1 (2007-04-11 10:00) [5]
> SELECT field1, SUM(field2) FROM table GROUP BY 1
лучше указать явно поле по которому группировка. а еще лучше с именем таблицы.
← →
Плохиш © (2007-04-11 11:28) [6]
> Jan1 (11.04.07 10:00) [5]
>
> > SELECT field1, SUM(field2) FROM table GROUP BY 1
>
> лучше указать явно поле по которому группировка.
Чем "лучше"?
> а еще лучше с именем таблицы.
А это к психиатру...
← →
Johnmen © (2007-04-11 11:42) [7]
> Плохиш © (11.04.07 11:28) [6]
> Чем "лучше"?
Ближе к истокам. :)
Т.е. к стандарту...
← →
Jan1 (2007-04-11 11:57) [8]
> А это к психиатру...
попроще чувырло. читай мануал к серверу - мож полегчает.
http://www.mysql.ru/docs/man/Group_by_functions.html
а именно:
В ANSI SQL к предложению GROUP BY необходимо добавлять customer.name. В MySQL, если работа происходит не в режиме ANSI, это имя избыточно.
Не используйте данное свойство, если столбцы, пропущенные в части GROUP BY, не являются уникальными в данной группе! Возможны непредсказуемые результаты.
← →
Плохиш © (2007-04-11 12:37) [9]
> Jan1 (11.04.07 11:57) [8]
А слабо в своей же ссылке текст на два абзаца выше прочитать и пример к которому Вы соизволии комментарий привести? А также сравнить пример из сылки и пример из [2]?
← →
sholomgf (2007-04-11 15:51) [10]
> SELECT field1, SUM(field2) FROM table GROUP BY 1
Я так делаю! Считает сумму совершенно неверно!!!!!!!!!
И по имени столбца тоже. Стал бы я вопрос писать, если бы всё так получалось....
← →
Sergey13 © (2007-04-11 15:58) [11]> [10] sholomgf (11.04.07 15:51)
> Считает сумму совершенно неверно!!!!!!!!!
Латинскими цифрами? Прописью с ошибками? Что значит "неверно"? Как проверял? Реальный запрос и структуру таблиы приведи.
← →
sholomgf (2007-04-11 17:24) [12]тип varchar
там цифры 1000, 300, 239,56456
Суммирует неправильно
Если сделать запрос типа
select sum(field2) from t1 тогда сумма верная, а с выводом с группировкаой неверно. Группирует по первому столбцу правильно, получается столько разных записей, сколько их имеется, а вот сумма для них неверная
← →
sholomgf (2007-04-11 17:27) [13]запрос такой
SELECT field1, SUM(field2) FROM table GROUP BY 1
заместо 1 пробовал имя столбца. результат одинаковый
← →
Jan1 (2007-04-11 17:47) [14]тип поля field2?
← →
Jan1 (2007-04-11 17:50) [15]
> тип varchar
> там цифры 1000, 300, 239,56456
ага! и что ты хотел получить при суме строк?
А так?
SELECT field1, SUM(cast(field2 as SIGNED)) as SUM_F2 FROM table GROUP BY 1
← →
sholomgf (2007-04-11 18:07) [16]
> SELECT field1, SUM(cast(field2 as SIGNED)) as SUM_F2 FROM
> table GROUP BY
Так получилось! Огромное всем спасибо. Стало ясно в чём проблема.
Тема закрыта!
← →
Jan1 (2007-04-11 18:10) [17]
> Так получилось!
мдя :(
а ты понимаешь чем тебе грозит хранение чисел в сроке?
← →
sholomgf (2007-04-11 19:12) [18]нет. подскажите пожалуйста
← →
Jan1 (2007-04-11 19:57) [19]
> нет. подскажите пожалуйста
геморроем и увольнением.
А в частности целостность данных, индексы оптимальные не создашь да и с операциями(+,- и т.п.) прийдется только через cast работать.
← →
sholomgf (2007-04-11 20:48) [20]ага. спасибо большое. буду учиться
Страницы: 1 вся ветка
Текущий архив: 2007.07.08;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.029 c