Проблемы с SUM()...

  • Автор темы lamer2005
  • Дата начала

lamer2005

Guest
Проблемы с SUM()...

Мне надо вытащить SUM(field) И еще несколько полей из другой таблицы, т.е.:
"SELECT SUM(table.field), another_table.field1, another_table.field2 FROM table, another_table WHERE another_table.field1 = {условие} AND table.field = {другое условие}"...

SUM() мне возвращает все что угодно, но не сумму (вообще похоже на минимальное значение или на значение первой записи, удовлетворяющей условию)

Знаю, что надо еще GROUP BY добавить. Добавлял но так и не понял по каким столбцам группировать надо, т.к. возвращало мне все равно фигню какую-то.

Может кто расскажет в чем дело.??
 

alexhemp

Новичок
lamer2005

Надо сначала решить - какие данные нужны. Если нужна скажем сумма всех платежей по контрагенту, то нужно по контрагенту и группировать.

А дело исключительно в нежелании прочитать мануал по mysql.
 

lamer2005

Guest
Ну не правда мануал я читал... правда может не там где надо... я еще поищу... Ну и спасибо за ответ попробую, хотя почему-то мнее кажется, что я уже группировал, по нужному полю, т.к. я многое перепробовал.
 

alexhemp

Новичок
lamer2005

Объясню - если тебе кажется - значит ты не знаешь точно что прав. Если не знаешь как - читать синтаксис.

Объясню на пальцах.

Есть таблица, например: человек, яблоки

Мы записываем в базу ФАКТЫ

Маша, +3 (маша купила 3 яблока)
Петя, +5 (купил 5)
Маша, -2 яблока (маша съела 2)
Маша, +3 (украла у пети 3)
Петя, -3 (потерял 3 - возможно украла Маша)

Далее мы можем делать выборку
SELECT человек, яблоки FROM таблица

Это наша базовая выборка. Она может быть сколь угодно сложной, т.к. выборка из одной таблицы - редкое дело. Итак нужно построить сперва ту выборку которую ты будешь в дальнейшем группировать.

Далее мы хотим подсчитать, а сколько яблок в итоге сейчас у наших "человеков".

SELECT человек, SUM(яблоки) FROM таблица

Это будет неверно, ибо SQL сервер не знает, в каком поле содержаться данные, идентифицирующие группу (внутри которой очевидно и нужно складывать числа в столбик).

Итак мы должны указать и это
SELECT человек, SUM(яблоки) FROM таблица GROUP BY человек

Итог:
Маша, 4
Петя, 2

Идея ясна? Группировка происходит по общему для группы значению поля. Все остальные детали - в мануале на оператор SELECT.
 
Сверху