Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли в FB1.5 применять Group by ко всему запросу с Union? / 25 сообщений из 28, страница 1 из 2
05.07.2004, 10:31:40
    #32588886
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Пробовал:
Select A1.f1, sum(A1.f2)
From A1
Group by A1.f1
UNION ALL
Select A2.f1, sum(A2.f2)
From A2
Group by A2.f1

Так работает, но убрать первый Group by A1.f1 не дает - выдает ошибку.

Если есть такая возможность, подскажите пож. синтаксис.
...
Рейтинг: 0 / 0
05.07.2004, 10:53:13
    #32588933
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
>... но убрать первый Group by A1.f1 не дает - выдает ошибку.

Заодно и вместо sum(A1.f2) напиши 777 - всё опять заработает :))

...
Рейтинг: 0 / 0
05.07.2004, 11:09:50
    #32588977
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Может я не точно сказал, что мне надо. Приведу пример:
А1:
f1 f2
Иван 100
Иван 50
Петр 50

А2:
Иван 50
Петр 100

Запрос:
Select A1.f1, sum(A1.f2)
From A1
Group by A1.f1
UNION ALL
Select A2.f1, sum(A2.f2)
From A2
Group by A2.f1

вернет:
Иван 150
Петр 50
Иван 50
Петр 100

А мне необходимо:
Иван 200
Петр 150
...
Рейтинг: 0 / 0
05.07.2004, 11:19:26
    #32589004
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Зашей свои union`ы в ХП и общий group by примени при обращении к ХП.
...
Рейтинг: 0 / 0
05.07.2004, 11:31:56
    #32589044
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Т.е. применить Group by ко всему запросу, в котором есть Union нельзя? Только через ХП/Просмотр?
...
Рейтинг: 0 / 0
05.07.2004, 11:34:15
    #32589051
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Можно попробовать через FULL JOIN извернуться одним запросом.
Вообще, конечно, когда есть 2 таблички с идентичной структурой
и по ним приходится часто строить запросы с UNION, то имхо,
база криво спроектирована.
tria, как зовут человека, проектировавшего базу? Не Борис ли часом?
...
Рейтинг: 0 / 0
05.07.2004, 11:44:56
    #32589075
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Табличка А1 - табличка остатков на начало каждого месяца, Табличка А2 - табличка движений. Структура соответственно отличается, совпадает только перечень аналитики. Цель запроса - получить оборотно-сальдовую ведомость за произвольный период. Полную структуру я не приводил, дабы проще было понять идею вопроса.

Кстати, отсюда вытекает следующий вопрос:
Select A1.f1, sum(A1.Ost), Sum(0), Sum(0)
From A1
Group by A1.f1
UNION ALL
Select A2.f1, Sum(0), sum(A2.Prihod) sum(A2.Rshod)
From A2
Group by A2.f1

В результирующем запросе A2.Prihod и A2.Rshod округлятся до целых. А мне это ненадо.
...
Рейтинг: 0 / 0
05.07.2004, 11:49:39
    #32589091
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Без UNION тут можно обойтись
...
Рейтинг: 0 / 0
05.07.2004, 11:52:46
    #32589098
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
>Без UNION тут можно обойтись

При это желательно обойтись без ХП и просмотров.
Дело в том, что текст запроса составляется динамически, в зависимости от требований пользователя. Создавать и удалять ХП и просмотр при каждом выполнении отчета - на мой взгляд нехорошо.
...
Рейтинг: 0 / 0
05.07.2004, 12:04:19
    #32589130
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Давай уточним требуемый тип джойна.
Могут ли в таблице A1 быть такие значения поля F1, которых нету в А2?
И наоборот, могут ли в А2 быть значения F1, отсутствующие в А1?
...
Рейтинг: 0 / 0
05.07.2004, 12:15:55
    #32589154
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
>Могут ли в таблице A1 быть такие значения поля F1, которых нету в А2?
Да, могут. Например - переходящий остаток с прошлого месяца. Движений в А2 нет, а остаток в А1 есть.

>И наоборот, могут ли в А2 быть значения F1, отсутствующие в А1?
Тоже могут быть. Товар пришел и ушел, остаток на конец месяца - 0. Такие записи есть в таблице движений А2 но отсутствуют в таблице остатков А1.
...
Рейтинг: 0 / 0
05.07.2004, 12:20:07
    #32589168
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Значит таки FULL JOIN .
Вот на нём и строй запрос.
А UNION тебе не нужен.
...
Рейтинг: 0 / 0
05.07.2004, 12:31:42
    #32589202
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
>Значит таки FULL JOIN.
>Вот на нём и строй запрос.

А можно пример? А то я честно говоря не знаю как.
...
Рейтинг: 0 / 0
05.07.2004, 12:55:25
    #32589284
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
>tria

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

>Мимопроходящий
>FULL JOIN

"Это вряд ли" (c)
...
Рейтинг: 0 / 0
05.07.2004, 13:07:04
    #32589326
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Насколько я понял, в интербейсах нету full outer join, а в таких случаях именно он и нужен
...
Рейтинг: 0 / 0
05.07.2004, 13:20:49
    #32589354
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
feddНасколько я понял, в интербейсах нету full outer join, а в таких случаях именно он и нужен
А RTFM?

2tria: схематично и сильно упрощенно, запрос примерно такой:
Код: plaintext
1.
2.
3.
SELECT COALESCE(A1.F1, A2.F1),  /*...дальше тут то, что тебе нужно */ 
FROM
A1 FULL JOIN A2 ON A1.F1 = A2.F1
GROUP BY  1 
...
Рейтинг: 0 / 0
05.07.2004, 13:48:50
    #32589427
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
2Мимопроходящий
А как бы еще к полю COALESCE(A1.F1, A2.F1) применить LEFT JOIN?
...
Рейтинг: 0 / 0
05.07.2004, 13:50:42
    #32589432
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Снимаю предыдущий вопрос. Протупил.
...
Рейтинг: 0 / 0
06.07.2004, 10:30:16
    #32590666
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
2Мимопроходящий

Для правильной работы Вашего примера должно выполняться требование: не должно быть полей-аналитики со значением null.
Или я что-то не так понял?
...
Рейтинг: 0 / 0
06.07.2004, 10:31:37
    #32590672
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Переведи.
...
Рейтинг: 0 / 0
06.07.2004, 10:38:01
    #32590687
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
В моем примере f1 - имена сотрудников. Т.е. то, в разрезе чего хранятся остатки. Для работы Вашего примера недопустима ситуация:
f1 f2
Иван 100
Иван 50
Петр 50
null 30

А2:
Иван 50
Петр 100

В результате в выборке мы не получим строки

null, 30, 0
...
Рейтинг: 0 / 0
06.07.2004, 10:41:21
    #32590703
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Интересно, какую информацию в себе несёт строчка
null 30
?
...
Рейтинг: 0 / 0
06.07.2004, 10:57:03
    #32590748
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Пример1: торговля комплектующими ПК. Аналитика: Склад, Товар, Серийный номер. Есть комплектующие, у которых нет серийного номера.
Пример 2: взаиморасчеты в разрезе Контрагент, Контракт. Бывают контрагенты, с которыми нет контрактов.
...
Рейтинг: 0 / 0
06.07.2004, 11:01:54
    #32590760
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Мутишь ты чего-то. В твоём примере:
Код: plaintext
1.
2.
Иван  100 
Иван  50 
Петр  50 
как я понимаю, Иван и Петро - контрагенты (они же комплектующие, если угодно).
Или шо?
...
Рейтинг: 0 / 0
06.07.2004, 11:13:47
    #32590795
tria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в FB1.5 применять Group by ко всему запросу с Union?
Мутно высказываюсь - это наверное от того, что я хочу решить не конкретную задачу, а определиться с методологией работы в целом.

Есть такое понятие в 1С - регистр. Я хочу сделать его аналог.
На логическом уровне (для пользователя) регистр содержит:
1. Аналитику (Контрагент, Товар, Серийный номер) - то есть то, в разрезе чего хранятся остатки.
2. Ресурсы - Кво, Сумма - собственно говоря, какие остатки хранятся.

На физическом уровне регистр состоит из 2-х таблиц: таблица остатков и таблица движений. В таблицу остатков добавляется поле - дата остатка (в моем случае - дата начала месяца, периодичность хранения остатка - месяц). В таблицу движений добавляется поле Документ, сделавший движение, признак прихода/расхода, дата и время движения.

В общем случае, при записи нового движения пользователь может не указать одну из аналитик. В результате в текущем месяце появяться записи в обоих таблицах с аналитикой null. В следующем месяце останется одна такая запись в таблице остатков.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли в FB1.5 применять Group by ко всему запросу с Union? / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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