powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / помогите разобраться с запросом!
16 сообщений из 16, страница 1 из 1
помогите разобраться с запросом!
    #38328791
есть вот такой скажем макет запроса :-) веделил только ключевые слова!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select *
    from(
        select
        from(
            select    --выбирается столбец
            from
            where
            )
            left join(
                select
                from
                where    -- поместить данные из выбранного столбца
                )
                on
                left join(
                    select
                    from
                    where
                    )
                    on
    )
where


суть вопроса следущая! возможно ли как нибудь столбец из первого подзапроса закинуть в условие выборки при левом присоединение?? выдает ошибку что столбец не перечислен в соответствуещей таблице! это и понятно так как приновом where жизнь метки уходит :-)

подскажите как можно выбраться из данной ситуевины?? или выхода нету??
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38329028
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Конвозможно ли как нибудь столбец из первого подзапроса закинуть в условие выборки при левом присоединение??
Такой вариант пройдет?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select *
    from(
        select
        from(
            select fld    --выбирается столбец
            from
            where
            ) as test
            left join(
                select
                from
                where test.fld is not null   -- поместить данные из выбранного столбца
                )
                on
                left join(
                    select
                    from
                    where
                    )
                    on
    )
where



Дмитрий Конподскажите как можно выбраться из данной ситуевины?? или выхода нету??
Для этого нужно знать набор таблиц со свойствами и суть задачи...
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38329043
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Доктор, когда я делаю вот так, у меня болит. — А вы так не делайте"
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38329080
krvsaДмитрий Конвозможно ли как нибудь столбец из первого подзапроса закинуть в условие выборки при левом присоединение??
Такой вариант пройдет?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select *
    from(
        select
        from(
            select fld    --выбирается столбец
            from
            where
            ) as test
            left join(
                select
                from
                where test.fld is not null   -- поместить данные из выбранного столбца
                )
                on
                left join(
                    select
                    from
                    where
                    )
                    on
    )
where



Дмитрий Конподскажите как можно выбраться из данной ситуевины?? или выхода нету??
Для этого нужно знать набор таблиц со свойствами и суть задачи...

Нет такой вариант не пойдет, это первое что я попытался сделать! Выдает ошибку "метка test не перечисленна в соответствующих таблицах"

Щас попозже опишу суть запроса и свойства таблиц!
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38329160
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий КонЩас попозже опишу суть запроса и свойства таблиц!С этого и стоило начать.
А пока не видно направленности Вашего вопроса сугубо к СУБД Caché.
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38332189
Ну да чисто к субд каши вопрос мало относится! Возможно и не там создал, просто на сервере установленна именно каши! Запрос должен выбирать все оплаты с даты последней сверки!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
select *
    from(
        select
        from(
            select   
                PlatFK,
                Next_dat --выбирается столбец
            from A
            where
            Group by PlatFK
            ) A1
            left join(
                select
                     PlatFK,
                     Sum(platezi)
                from B
                where  
                     Data between [color=red]A1.Next_dat[/color] and current_date  -- поместить данные из выбранного столбца
                ) B1
                on A1.PlatFK = B1.PlatFK
                left join(
                    select
                    from
                    where
                    )
                    on
    )
where




Щас думаю смысл запроса будет более понятен!
В таблице А1 из бд последней проверки берется дата, когда это проверка провелась!
А из таблицы В1 нужно выбрать все платежи которые были внесены после этой даты, тоесть от даты проверки по сегодняшний день и считается сумма задолжности!!

При таком плане запроса ругается что метка А1 не найдено в обрабатываемых таблицах! A1.Next_dat получается так нельзя указать дату с которой надо искать!! Как можно передать дату в запрос? :-)
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38332226
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий КонЩас думаю смысл запроса будет более понятен!Нисколько. Часто бывает, что своим изначальным запросом ТС только уводит в сторону от сути проблемы. Ожидалось, что Вы сделаете наподобие следующего. Дано:
  • Описание класса A
  • Описание класса Б
  • Содержимое таблицы A IDПоле1Поле2ПолеN1Значение1Значение2ЗначениеN2Значение1Значение2ЗначениеN...MЗначение1Значение2ЗначениеN
  • Содержимое таблицы Б IDПоле1Поле2ПолеN1Значение1Значение2ЗначениеN2Значение1Значение2ЗначениеN...MЗначение1Значение2ЗначениеN
Результат IDПоле1Поле2ПолеN1Значение1Значение2ЗначениеN2Значение1Значение2ЗначениеN...MЗначение1Значение2ЗначениеN Этим Вы сильно сэкономите время отвечающим и повысите вероятность ответа, причём правильного.
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38332494
Дано:
  • Содержимое таблицы A IDPlatFKNext_dat1101.04.20132201.01.201310110101.07.201320010201.01.2013
  • Содержимое таблицы B IDPlatFKDataPlatezi1101.02.20131002101.05.20132003201.12.20121004220.02.20131005207.05.201330030010101.02.201320030110101.05.201310040010201.01.201380
Результат IDPlatFKsum(Platezi)1120022400101101020010280 Ну вот содержимое таблиц! Примерное!
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38332812
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Кон,

По-моему, тут что-то некорректно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
select *
    from(
        select
        from(
            select   
                PlatFK,
                Next_dat --выбирается столбец  --Здесь должна выдаваться ошибка, что Next_dat не входит в список "Group by"
                                   --может быть max(Next_dat)???
            from A
            where
            Group by PlatFK
            ) A1
            left join(
                select
                     PlatFK,
                     Sum(platezi) --поскольку здесь агрегатная функция
                from B
                where  
                     Data between [color=red]A1.Next_dat[/color] and current_date  -- поместить данные из выбранного столбца
group by  PlatFK  --наверное группировка нужна???             
 ) B1
                on A1.PlatFK = B1.PlatFK
                left join(
                    select
                    from
                    where
                    )
                    on
    )
where


В общем, вопрос понятнее не стал.

А если выборку платежей как-то так попробовать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
       select
                     PlatFK,
                     Sum(platezi)
                from B
                where  
                     Data >(select  max(Next_dat)  from A  where A.PlatFK = B.PlatFK)
                Group by PlatFK



Или так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
       
select
                     PlatFK,
                     Sum(platezi)
from   ( select
                     PlatFK,
                     platezi
                from B
                where  
                     Data >(select  max(Next_dat)  from A  where A.PlatFK = B.PlatFK)
          ) 

Group by PlatFK
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38332821
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий КонНу вот содержимое таблиц! Примерное!Это совсем другое дело. Только на будущее вместо N подставляйте реальные значения.
select 
  ID,
  PlatFK,
  nvl((select sum(Platezi) from B where PlatFK=A.PlatFK and Data between A.Next_dat and current_date),0) "sum(Platezi)"
from A
group by PlatFK
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38334036
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , что-т сомнения у меня по запросу...

При использовании

Код: sql
1.
group by PlatFK



Какое значение ожидается у свойства

Код: plsql
1.
A.Next_dat



Тут, мне кажется, нужно сначала выбрать данные, а потом уже группировать, применив агрегатную функцию...
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38334053
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. нечто такое...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT
	*,
	sum(sumPlt) "sum(Platezi)"
FROM
(
SELECT
	*,
	(
	SELECT
		sum(Platezi)
	FROM
		B as B
	WHERE
		B.PlatFK=A.PlatFK and B.Data between A.Next_dat and current_date
	) as sumPlt
FROM
	A as A
)
GROUP BY PlatFK
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38334068
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , и по использованию current_date меня терзают смутные сомнения...

Наверняка нужно суммы брать от "даты в записи" до "минимальной, но большей" "даты в записи"... Иначе суммы будут кагбэ "накладываться"...
Но тут больше вопрос к автору.
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38334081
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий КонНу вот содержимое таблиц! Примерное!
Кабы ты классы сделал и написал программку их заполнения... Тогда можно было бы реально запросы потестить...
Лениться не нужно. Особенно в решении своих же проблем...
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38334246
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa ,

Код: sql
1.
group by PlatFK 

можно вообще убрать, если основываться на приведённых ТС данных.
...
Рейтинг: 0 / 0
помогите разобраться с запросом!
    #38334417
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit
Код: sql
1.
group by PlatFK 

можно вообще убрать, если основываться на приведённых ТС данных.
Судя по его примеру ответа

Дмитрий КонНужно получить таблицу Результат IDPlatFKsum(Platezi)1120022400101101020010280
PlatFK не имеет повторений...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / помогите разобраться с запросом!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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