powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Посоветуйте по ЗАПРОСУ
12 сообщений из 37, страница 2 из 2
Посоветуйте по ЗАПРОСУ
    #39820825
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

в моей задаче он не нужен
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39820827
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

порадовался, похоже, преждевременно. Как сджойнить с таблицей? Попробовал пример:
Код: sql
1.
2.
3.
4.
5.
6.
select b.d, count(*)
from get_dates('2019-04-01', '2019-05-31') b
     left join umass a on b.d=a.dat_kontr
where a.dat_kontr between '2019-04-01' and '2019-04-30'
group by 1
order by 1


Что left, что inner. Результат - только даты, присутствующие в umass.
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39820828
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,
А так?
Код: sql
1.
2.
3.
4.
5.
6.
select b.d, count(*)
from get_dates('2019-04-01', '2019-05-31') b
     left join umass a on b.d=a.dat_kontr
--where a.dat_kontr between '2019-04-01' and '2019-04-30'
group by 1
order by 1
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39820863
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

не вариант совсем. Появилась запись с пустой датой. Но umass просканировался весь, а это миллионы записей.
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39820876
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

Значит, условие нужно положить ... куда?
(чтобы left не превращался в inner)
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39820893
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with a as (
  select umass.dat_kontr, count(*) as cnt
  from umass 
  where umass.dat_kontr between '2019-04-01' and '2019-04-30'
  group by 1
  order by 1
)
select b.d, coalesce(a.cnt, 0) as cnt
from get_dates('2019-04-01', '2019-05-31') b
left join a on b.d=a.dat_kontr



а так? Увы left join пока через HASH JOIN не умеет выполнятся, в данном случае было бы самое оно
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39821014
dennis-r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryА вообще, кроме меня и МП, кто производственный календарь-то использует?У меня в базах с ~2000 года живёт. Плюс таблица праздников и процедура генерирующая календарь на месяц по умолчанию. Всё хозяйство не менялось уж почти 20 лет. Работает, как часы календарь... вечный.
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39821025
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery > А вообще, кроме меня и МП, кто производственный календарь-то использует?

У меня был в 1 ИС. Но не для кадров/бухов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39821026
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не такой навороченный, как у тебя IIRC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39821474
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Навороченность - дело десятое, она-то как раз от задачи зависит, есть ли необходимость считать, например, "банковские дни", или "часы работы по сменному графику с учётом предпраздничных дней".
Но ведь отчёты "по дням" (по неделям, etc.) постоянно почти в любой предметной области используются. Не представляю, как, и главное, зачем, люди обходятся без простейшего календарика.

А, не, представляю. Это не первый вопрос с такой темой на форуме.
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39821531
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисKreatorXXI,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with a as (
  select umass.dat_kontr, count(*) as cnt
  from umass 
  where umass.dat_kontr between '2019-04-01' and '2019-04-30'
  group by 1
  order by 1
)
select b.d, coalesce(a.cnt, 0) as cnt
from get_dates('2019-04-01', '2019-05-31') b
left join a on b.d=a.dat_kontr



а так? Увы left join пока через HASH JOIN не умеет выполнятся, в данном случае было бы самое оно

Да, так работает. Можно ещё верхний запрос загнать вниз под left join.
...
Рейтинг: 0 / 0
Посоветуйте по ЗАПРОСУ
    #39821536
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

мне CTE как-то удобней derived table, но это дело вкуса
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Посоветуйте по ЗАПРОСУ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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