Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / помогите разобраться с запросом! / 16 сообщений из 16, страница 1 из 1
12.07.2013, 09:14
    #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
12.07.2013, 11:32
    #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
12.07.2013, 11:39
    #38329043
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом!
"Доктор, когда я делаю вот так, у меня болит. — А вы так не делайте"
...
Рейтинг: 0 / 0
12.07.2013, 11:56
    #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
12.07.2013, 12:31
    #38329160
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом!
Дмитрий КонЩас попозже опишу суть запроса и свойства таблиц!С этого и стоило начать.
А пока не видно направленности Вашего вопроса сугубо к СУБД Caché.
...
Рейтинг: 0 / 0
16.07.2013, 08:36
    #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
16.07.2013, 09:17
    #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
16.07.2013, 12:08
    #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
16.07.2013, 14:22
    #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
16.07.2013, 14:25
    #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
17.07.2013, 13:18
    #38334036
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом!
servit , что-т сомнения у меня по запросу...

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

Код: sql
1.
group by PlatFK



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

Код: plsql
1.
A.Next_dat



Тут, мне кажется, нужно сначала выбрать данные, а потом уже группировать, применив агрегатную функцию...
...
Рейтинг: 0 / 0
17.07.2013, 13:26
    #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
17.07.2013, 13:34
    #38334068
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом!
servit , и по использованию current_date меня терзают смутные сомнения...

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

Код: sql
1.
group by PlatFK 

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

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

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


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