powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как SELECT+UNION SELECT+GROUP BY
23 сообщений из 23, страница 1 из 1
Как SELECT+UNION SELECT+GROUP BY
    #32658061
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно выбрать данные из одной таблицы select-ом с группировкой и добавить select из другой таблицы тоже с группировкой, потом данные сортируются
"Сравню" опять же с Oracle для лучшего понимания моей траблы:
Код: plaintext
1.
2.
3.
4.
select production_id, net from
         (select production_id, sum(gross-container) as net from main
          union select production_id, sum(counter*otves) as net from sklad) 
         group by  1  order by  1 
Как не извращался в ХП, но аналога получить в FB 1.5.1 не могу...
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658092
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Select From Select нет пока. Можно попробовать создать view из "внутреннего" селекта, ну и потом Select From View... Правда, какое-то время назад не рекомендовалось использовать union во view, но в последнее время про проблемы с этим не слышно. Тут уж пусть разработчики скажут...
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658099
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйМожно попробовать создать view из "внутреннего" селекта, ну и потом Select From View...
Не получится у меня еще есть условия по которым осуществляются SUM, например, data between......
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658142
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinНужно выбрать данные из одной таблицы select-ом с группировкой и добавить select из другой таблицы тоже с группировкой, потом данные сортируются
"Сравню" опять же с Oracle для лучшего понимания моей траблы:
Код: plaintext
1.
2.
3.
4.
select production_id, net from
         (select production_id, sum(gross-container) as net from main
          union select production_id, sum(counter*otves) as net from sklad) 
         group by  1  order by  1 
Как не извращался в ХП, но аналога получить в FB 1.5.1 не могу...
Вообще-то у тебя хоть и для примера select написан, но ошибок в нем хватает...
1. во "внешнем" select-e нет агрегирующей функции по колонке net
2. во "внутренних" selecta-х отсутствует group by, а агрегирующая функция sum есть, но не все поля с аргегирующей функцией.
Честно говоря довольно таки сложно угадать, чего ты хочешь, тем более, что в догонку дописываешь еще дополнительные условия...
Вообщем - правильно сформулированный вопрос содержит в себе 90% ответа.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658172
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо уточню:
Необходимо посчитать сумарный вес каждого вида продукции по двум таблица за определенный период, получненные данные должны быть отсортированы по id продукции.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658201
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй , по поводу запроса - в Oracle я не силен, просто у коллег спросил как они решают эту проблему на нем, мне был приведен такой пример.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658279
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinХорошо уточню:
Необходимо посчитать сумарный вес каждого вида продукции по двум таблица за определенный период, получненные данные должны быть отсортированы по id продукции.Вот так примерно:
Код: plaintext
1.
2.
3.
4.
5.
Select m.production_id, Sum(m.net) + 
                       (Select Sum(counter*otves) from Sklad 
                        Where production_id = m.production_id)
From Main m
Group By  1 
Ну а условия вставляешь по необходимости.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658299
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйВот так примерно:
Код: plaintext
1.
2.
3.
4.
5.
Select m.production_id, Sum(m.net) + 
                       (Select Sum(counter*otves) from Sklad 
                        Where production_id = m.production_id)
From Main m
Group By  1 
Ну а условия вставляешь по необходимости.
Да это не то - сумма по каждой таблице, по каждой продукции отдельно
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658305
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй , кстате, вложеный запрос у вас тоже не имеет group by как говорят жители крайнего севера - однако!!!
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658320
Фотография AndriyKo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin Лентяй , кстате, вложеный запрос у вас тоже не имеет group by как говорят жители крайнего севера - однако!!!

На кой она ему там нужна, он же только сумму по конкретному production_id вытаскивает.


(Select Sum(counter*otves) from Sklad Where production_id = m.production_id)
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658332
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin Лентяй , кстате, вложеный запрос у вас тоже не имеет group by как говорят жители крайнего севера - однако!!!
Кстат и правильно писать.
А group by не нужен здесь, так как агрегат вычисляется по всей выборке.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658351
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin ЛентяйВот так примерно:
Код: plaintext
1.
2.
3.
4.
5.
Select m.production_id, Sum(m.net) + 
                       (Select Sum(counter*otves) from Sklad 
                        Where production_id = m.production_id)
From Main m
Group By  1 
Ну а условия вставляешь по необходимости.
Да это не то - сумма по каждой таблице, по каждой продукции отдельно
Что не то? Суммы должны быть отдельно по колонкам?, ну дак поставь вместо знака "+" запятую.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658387
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно я тоже поинтересуюсь?
Я тоже в Оракле не силен (можно сказать совсем плох), но мне показалось,
что запрос:
Код: plaintext
1.
2.
3.
4.
select production_id, net from
         (select production_id, sum(gross-container) as net from main
          union select production_id, sum(counter*otves) as net from sklad) 
         group by  1  order by  1 

выдаст тоже, что и:


Код: plaintext
1.
2.
3.
4.
5.
select production_id, sum(gross-container) as net from main
 group by  1 
union select production_id, sum(counter*otves) as net from sklad) 
  group by  1 
 order by  1 

???
Нет? Или это на форум ораклистов?
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658404
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйЧто не то? Суммы должны быть отдельно по колонкам?, ну дак поставь вместо знака "+" запятую.
Все это должно быть в строку, об этом я написал в самом начале, кстатЕЕЕЕ
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658405
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не учитывать ошибок в первом запросе, то он вернет 1 строку на каждый production_id, а твой - две.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32658932
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лентяй
Если не учитывать ошибок в первом запросе, то он вернет 1 строку на каждый production_id, а твой - две.

То есть если мой запрос должен выдать

production_id данные_первой_таблицы
production_id данные_второй_таблицы

то оракловый

production_id данные_первой_таблицы данные_второй_таблицы
?

Если так, то что тогда wolverin-у нужно? Вроде твой запрос с последней поправкой
должен выдать тоже самое.

2wolverin
Ну заинтриговали вы меня. Может на пальцах объясните, что надо то?
Типа в первой таблице такие-то данные, во второй такие, нужно получить такое.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32659175
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin ЛентяйЧто не то? Суммы должны быть отдельно по колонкам?, ну дак поставь вместо знака "+" запятую.
Все это должно быть в строку, об этом я написал в самом начале, кстатЕЕЕЕ
А так как я предложил в столбик что-ли? Ты бы хоть запрос у себя выполнил...
Все, больше отвечать не буду, лень х..ей заниматься.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32659358
Deepseadiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то у вас земляне бесполезный спор получился.
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32660470
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Somebody2 , хех :( Нужно было что-то похожее на это, но FB такого не позволяет
Код: plaintext
1.
2.
3.
4.
5.
select production_id, sum(gross-container) as net from main
 group by  1 
union select production_id, sum(counter*otves) as net from sklad) 
  group by  1 
 order by  1 

ЛентяйА так как я предложил в столбик что-ли? Ты бы хоть запрос у себя выполнил...
Может я и чайник, но то что выдаст запрос я и так догоняю
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32660512
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolverin Somebody2 , хех :( Нужно было что-то похожее на это, но FB такого не позволяет
Код: plaintext
1.
2.
3.
4.
5.
select production_id, sum(gross-container) as net from main
 group by  1 
union select production_id, sum(counter*otves) as net from sklad) 
  group by  1 
 order by  1 


Как это не позволяет??!!! Там просто скобка лишняя (очепятка понимешь ли) -
Код: plaintext
1.
union select production_id, sum(counter*otves) as net from sklad) 
а надо
Код: plaintext
1.
union select production_id, sum(counter*otves) as net from sklad

FB 1.5
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32660528
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Somebody2
Код: plaintext
1.
2.
3.
4.
5.
select production_id, sum(gross-container) as net from main
 group by  1 
union select production_id, sum(counter*otves) as net from sklad) 
  group by  1 
 order by  1 
Как это не позволяет??!!!

А Вы сами попробуйте-то, лично мне в IBE пишется что незя писать union после первого group by
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32660530
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, ЧУШЬ СМОЛОЛ
...
Рейтинг: 0 / 0
Как SELECT+UNION SELECT+GROUP BY
    #32660532
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это оказывается раньше незя было в FB 1.0... гы )
Спасибо ВСЕМ БОЛЬШОЕ ЗА ЛИКБЕЗ
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как SELECT+UNION SELECT+GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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