powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с суммированием ! Пожалуйста
22 сообщений из 22, страница 1 из 1
Помогите с суммированием ! Пожалуйста
    #34067424
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет
Неожиданно столкнулся с проблемой
есть 3 таблица t1,t2,t3
Надо проделать суммирование поля summa в t2 и t3. Родительская таблица для обех t1.
те группирование по t1_id в t1, t1_id есть в таблицах t2 и t3.
Если я соединяю t1 по LEFT с одной из таблиц - OK.
Если соединяю в одном запросе с обеими таблицами вместе - итоговые суммы получаются не те.
Какие-то очень большие .
Что делать ? Помогите
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067498
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PerederiyЧто делать ?
Первым делом показать нам структуру таблиц и запрос, который не работает.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067606
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
t1
t1_id
значения 1,2,3,4,5,6,7,8,9,10

t2
t2_id
t1_id
значения 3,3,3,6,7,7,7
summa
значения 1,1,1,1,1,1,1

t3
t3_id
t1_id
значения 1,2,3,6,7,7,7,8,8,8,9
summa
значения 1,1,1,1,1,1,1,1,1,1,1

Вся соль что надо соединение по LEFT .

Я думал что это глюк PostgreSQL. Или как ? Очень хотелось бы ошибаться - горю.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067628
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamir PerederiyЧто делать ?
Первым делом показать нам структуру таблиц и запрос, который не работает .
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067728
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я в принципе спрашиваю - это глюк Postgresql ?
С таким случаем кто-то сталкивался ?
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067737
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perederiyя в принципе спрашиваю - это глюк Postgresql ?
С таким случаем кто-то сталкивался ?
Ааа, ну если так вопрос стоит - нет, это не глюк. Это у вас ошибка в 17той строке.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067837
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не телепаты мы не плотники
:)
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067872
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин
запарка на работе
Я спрашиваю - кто-то с этим сталкивался ? Это глюк Posygresql или нет ?
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067904
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perederiyблин
запарка на работе
Я спрашиваю - кто-то с этим сталкивался ? Это глюк Posygresql или нет ?

Я могу предположить, что дело в Вашем непонимании SQL, но без текста запроса это будет всего лишь предположение.

Однако, Вы сказали, что запросы над каждой таблицей по отдельности у Вас работают.

Почему бы ни сделать примерно так
SELECT SUM(FLD_TO_SUM) FROM
(
SELECT T2 AS FLD_TO_SUM FROM (.....)
UNION ALL
SELECT T3 AS FLD_TO_SUM FROM (.....)
) S

т.е. достать поля для суммирования сначала из одной таблицы, потом из другой, а потом сложить их вместе?
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067940
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет ну понятно что этот вариант сработает
мне хотелось бы без маятни с UNION

с применением LEFT JOIN
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067966
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perederiyнет ну понятно что этот вариант сработает
мне хотелось бы без маятни с UNION

с применением LEFT JOIN

"Запарка на работе - срочно помогите" - "не могу или не хочу привести запрос" - "мне хотелось бы без маятни".

Диагноз, извините.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34067989
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в который раз спрашиваю
неправильное суммирование в нескольких таблицах соединеннных с главной по LEFT JOIN в ОДНОМ запросе это глюк Posygresql или нет ?
Да- значит делаю по с помощью UNION
Нет - покопаюсь в своем запросе
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068015
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perederiyв который раз спрашиваю
неправильное суммирование в нескольких таблицах соединеннных с главной по LEFT JOIN в ОДНОМ запросе это глюк Posygresql или нет ?
Да- значит делаю по с помощью UNION
Нет - покопаюсь в своем запросе

На мой взгляд, вероятность того, что это глюк PostgreSQL, пренебрежимо мала.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068106
Jelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Perederiyв который раз спрашиваю
неправильное суммирование в нескольких таблицах соединеннных с главной по LEFT JOIN в ОДНОМ запросе это глюк Posygresql или нет ?
Да- значит делаю по с помощью UNION
Нет - покопаюсь в своем запросе

Какой вы однако упрямый.... :-(
Но ни чего - надеюсь что это всего лишь от молодости :-)

Сказать "глюк" это, или не "глюк" можно только зная структуру таблиц и УВИДЕВ ЗАПРОС (как минимум)!!!! Но насамом деле, помойму тут и так все ясно - у вас запрос не правильный, вернее, не тот что вам нужен.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068134
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну какой глюк? У вас с высокой долей вероятности происходит размножение строк (декартова сумма) из-за забытого ограничения при связывании таблиц. Вот он вам и считает по сотни раз одну и туже сумму.
Но вы упорно не показываете запрос (и при этом сразу начинаете подозревать базу в глюках), поэтому остается только догадываться - что же там на самом деле.
Мой житейский опыт подсказывает - если получаешь неожиданные результаты, в первую очередь ищи ошибки в своем коде, а рассчитывать на глюки СУБД нужно в самую последнюю очередь.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068292
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<зануда вкл>декартово произведение <зануда выкл>
А ошибка не в 17-ой, а в 16 строке
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068307
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirУ вас с высокой долей вероятности происходит размножение строк (декартова сумма)Декарт здесь ни при чем.
Достаточно иметь между таблицами связь "один ко многим", чтобы получить корректный результат на связке "left join основная таблица - дочерняя_таблица" , но при этом получать размноженный результат на связке "left join основная таблица - дочерняя_таблица_1 - дочерняя_таблица_2".
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068407
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Анна
У меня как раз такой случай. Основная таблица связана с обеими дочерними по один-к многим.
И что же делать в таком случае ? Неужели только все делать через UNION ?
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068420
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PerederiyИ что же делать в таком случае ? Неужели только все делать через UNION ?Так как Вы так и не показали первоначальный вариант Вашего запроса, то от себя лично могу предположить, что Вам нужен запрос такого рода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select t1.*,
       coalesce(v_t2.sum_summa_t2, 0 ) as sum_summa_t2,
       coalesce(v_t3.sum_summa_t3, 0 ) as sum_summa_t3,
       coalesce(v_t2.sum_summa_t2, 0 ) + coalesce(v_t3.sum_summa_t3, 0 ) as total_summa_t2_t3
  from t1
  left outer join
       (
          select t1_id,
                 sum(summa) as sum_summa_t2
            from t2
           group by t1_id 
       ) v_t2
    on t1.t1_id = v_t2.t1_id
  left outer join
       (
          select t1_id,
                 sum(summa) as sum_summa_t3
            from t3
           group by t1_id 
       ) v_t3
    on t1.t1_id = v_t3.t1_id
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068777
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаДекарт здесь ни при чем.
Достаточно иметь между таблицами связь "один ко многим", чтобы получить корректный результат на связке "left join основная таблица - дочерняя_таблица" , но при этом получать размноженный результат на связке "left join основная таблица - дочерняя_таблица_1 - дочерняя_таблица_2".

Казалось бы, именно этот размноженный результат и может быть назван декартовым произведением.
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068807
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilejn Казалось бы, именно этот размноженный результат и может быть назван декартовым произведением.Ключевое слово в Вашем высказывании выделено красным ;)
...
Рейтинг: 0 / 0
Помогите с суммированием ! Пожалуйста
    #34068823
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна ilejnКазалось бы, именно этот размноженный результат и может быть назван декартовым произведением.Ключевое слово в Вашем высказывании выделено красным ;)
Вот теперь выделены ключевые слова.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с суммированием ! Пожалуйста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]