Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с запросом MYSQL ... [MySQL]


sholomgf ©   (2007-04-10 23:27:00) 

Здравствуйте! Есть таблица. В ней 2 столбца: field1, field2.
Забиты к примеру значения:
field1    field2
www      1
xxx        3
xxx        2
xxx        1
www      2

В результате запроса надо получить
www   3
xxx      6

Тоесть надо сумму по второму полю собрать для уникальных значений из первого
Перепробовал множество запросов с SUM. Ничего правильного не получается. Очень надеюсь на вашу помощь!


sholomgf   (2007-04-11 20:48:00) [1]

ага. спасибо большое. буду учиться


Jan1   (2007-04-11 19:57:00) [2]


> нет. подскажите пожалуйста

геморроем и увольнением.
А в частности целостность данных, индексы оптимальные не создашь да и с операциями(+,- и т.п.) прийдется только через cast работать.


sholomgf   (2007-04-11 19:12:00) [3]

нет. подскажите пожалуйста


Jan1   (2007-04-11 18:10:00) [4]


> Так получилось!

мдя :(
а ты понимаешь чем тебе грозит хранение чисел в сроке?


sholomgf   (2007-04-11 18:07:00) [5]


> SELECT field1, SUM(cast(field2 as SIGNED)) as SUM_F2 FROM
> table GROUP BY

Так получилось! Огромное всем спасибо.Стало ясно в чём проблема.
Тема закрыта!


Jan1   (2007-04-11 17:50:00) [6]


> тип varchar
> там цифры  1000, 300, 239,56456

ага! и что ты хотел получить при суме строк?
А так?

SELECT field1, SUM(cast(field2 as SIGNED)) as SUM_F2 FROM table GROUP BY 1


Jan1   (2007-04-11 17:47:00) [7]

тип поля field2?


sholomgf   (2007-04-11 17:27:00) [8]

запрос такой
SELECT field1, SUM(field2) FROM table GROUP BY 1
заместо 1 пробовал имя столбца. результат одинаковый


sholomgf   (2007-04-11 17:24:00) [9]

тип varchar
там цифры  1000, 300, 239,56456
Суммирует неправильно
Если сделать запрос типа
select sum(field2) from t1 тогда сумма верная, а с выводом с группировкаой неверно. Группирует по первому столбцу правильно, получается столько разных записей, сколько их имеется, а вот сумма для них неверная


Sergey13   (2007-04-11 15:58:00) [10]

> [10] sholomgf   (11.04.07 15:51)
> Считает сумму совершенно неверно!!!!!!!!!

Латинскими цифрами? Прописью с ошибками? Что значит "неверно"? Как проверял? Реальный запрос и структуру таблиы приведи.


sholomgf   (2007-04-11 15:51:00) [11]


> SELECT field1, SUM(field2) FROM table GROUP BY 1

Я так делаю! Считает сумму совершенно неверно!!!!!!!!!
И по имени столбца тоже. Стал бы я вопрос писать, если бы всё так получалось....


Плохиш   (2007-04-11 12:37:00) [12]


> Jan1   (11.04.07 11:57) [8]

А слабо в своей же ссылке текст на два абзаца выше прочитать и пример к которому Вы соизволии комментарий привести? А также сравнить пример из сылки и пример из [2]?


Jan1   (2007-04-11 11:57:00) [13]


> А это к психиатру...

попроще чувырло. читай мануал к серверу - мож полегчает.
http://www.mysql.ru/docs/man/Group_by_functions.html
а именно:

В ANSI SQL к предложению GROUP BY необходимо добавлять customer.name. В MySQL, если работа происходит не в режиме ANSI, это имя избыточно.

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


Johnmen   (2007-04-11 11:42:00) [14]


> Плохиш ©   (11.04.07 11:28) [6]
> Чем "лучше"?

Ближе к истокам. :)
Т.е. к стандарту...


Плохиш   (2007-04-11 11:28:00) [15]


> Jan1   (11.04.07 10:00) [5]
>
> > SELECT field1, SUM(field2) FROM table GROUP BY 1
>
> лучше указать явно поле по которому группировка.

Чем "лучше"?

> а еще лучше с именем таблицы.

А это к психиатру...


Jan1   (2007-04-11 10:00:00) [16]


> SELECT field1, SUM(field2) FROM table GROUP BY 1

лучше указать явно поле по которому группировка. а еще лучше с именем таблицы.


Jan1   (2007-04-11 09:56:00) [17]


> Читать GROUP BY в букваре по SQL.
>

не поможет. так как

> Перепробовал множество запросов с SUM

Явный игнор советов, которые ему сервер давал.


boristt   (2007-04-11 09:56:00) [18]

А в общем Johnmen прав. Сначала синтаксис SQL выучи


boristt   (2007-04-11 09:55:00) [19]

SELECT field1, SUM(field2) FROM table GROUP BY 1


Johnmen   (2007-04-11 09:37:00) [20]

Читать GROUP BY в букваре по SQL.


Наверх

Титульная страница Поиск, карта сайта Написать письмо