powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Странный запрос, или как извратиться
52 сообщений из 52, показаны все 3 страниц
Странный запрос, или как извратиться
    #32836093
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MDB
Нужна идея
Есть данные
Таблица 1
КодДатаАктВыполнение101.01.04110102.01.04220201.01.04330
Таблица 2
КодДата п\пОплата105.01.045115205.01.045230
Можно ли с помощью запроса получить такую гуппировку
КодДатаАктВыполнение Дата п\пОплата101.01.04110 05.01.045115102.01.04220 201.01.04330 05.01.045230
Крутила и так и этак
Вижу выход заполнить через рекордсет, но боюсь, медленно работать будет
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836106
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро, Ирча.

Код: plaintext
1.
2.
SELECT Таблица1.Код, Таблица1.Дата, Таблица1.Акт, Таблица1.Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица1 LEFT JOIN Таблица2 ON Таблица1.Код=Таблица2.Код

И никаких рекордсетов ;)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836109
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- не надо, это просто выделить хотел, но не работает :)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836113
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро
Данные не совсем корректно привела
Таблица 1
Код Дата Акт Выполнение 1 01.01.04 110 1 02.01.04 2 20 2 01.01.04 3 30
Таблица 2
Код Дата п\п Оплата 1 05.01.04 51 15 2 05.01.04 52 30 2 06.01.04 53 30
Надо
Код Дата Акт Выполнение Дата п\п Оплата 1 01.01.04 1 10 05.01.04 51 15 1 02.01.04 2 20 2 01.01.04 3 30 05.01.04 52 30 2 06.01.04 53 30
Поэтому LEFT JOIN не поможет
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836127
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать так: Оформляем 2 запроса, один с LEFT JOIN, другой - RIGHT JOIN, а потом делаем объеденение этих запросов ( UNION) ? Как такой вариант?
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836128
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рачаев Олег - не надо, это просто выделить хотел, но не работает :)
LEFT JOIN и в первом варианте не совсем помогает, ибо во второй строке нулы не получатся :(

если в первой и второй таблице добавить счетчик внутри группы (Код),
например так: http://www.sql.ru/faq/faq_topic.aspx?fid=214 (Q7)

то мог бы помочь FULL JOIN, но его в Аксе нет, но можно на форуме пошукать как его сымитировать :)

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

1. Получить в запросе список уникальных КОД из первой и второй таблиц.
2. Объединить их юнионом.
3. Еще раз отфильтровать уникальные дистинктом.
4. Полученный результат джоинить с первой и второй таблицами.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836159
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы.
Попробую воспользоваться счетчиком
А как на чсет рекордсета, кто делал
записей много
стоит связываться или нет?
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836181
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a full join в Аксе нет?
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836271
Рачаев Олег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome, действительно Null-ей не получаеться, виноват - проглядел ...

А насчет фул джойна: Можно попробовать похимичить через условие WHERE, правда сложно получиться ...
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836274
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я сошла с ума, или бури сегодня магнитные,
ничего....
Пони бегает по кругу
Попробовала все предложения результат ЗИРРОУ
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836301
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и в уме круги считает

1 mdb выложи в архиве с маленькими табличками - будем думать
2 реальное количество записей - ?
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836355
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может тогда так?

select * from table1 as a cross join table2 as b
where (a.код=b.код or b.код in null) and (a.код=b.код or a.код in null)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836379
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shurgenzможет тогда так?

select * from table1 as a cross join table2 as b
where (a.код=b.код or b.код in null) and (a.код=b.код or a.код in null)
и в mdb cross join работает - а какая версия Access ?
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836385
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вместо кросс джойна можно и просто запятую поставить
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836400
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shurgenzвместо кросс джойна можно и просто запятую поставить
1 возможно
2 предлагать непроверенное - даме ,не очень галантно !
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836405
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шугард:

Согласен, однако, я же просто мысль предложил... дама, или не дама, учимся мы все, и дамы, и не дамы
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836414
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Как сымитировать Full Join
Union без All, а потом к нему присобачивать. Изврат, а что делать;-(
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836417
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же... разве есть разница между запятой и кросс джойном? я, чесс говоря, не встречал разницы меж тем и другим
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836582
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2003
cross и запятую пока не пробовала
Прикладываю файл с двумя табличками
Количество записей будет не более нескольких сотен за раз
на даты будет условие (отбор за период)
Помогите кто чем может (тут смайлик с большой лужей слез)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836681
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome
full join тут тоже не поможет - он перемножит количество записей с одинаковым кодом. А вот пронумеровать записи хорошо. Можно даже не в этом же запросе, а во временную таблицу. Ох, как интересно, да тут и индексов никаких нет.
А без индекса их и пронумеровать толком не получиться.
Хотя можно попробовать. Но скорость опять же позволит желать лучшего.

В стандартном модуле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim Kod
Dim CurrId as long

public function GetNextId(KeyField) as long
  if KeyField=Kod then
    CurrId=CurrId+ 1 
  else
    CurrId= 1 
    Kod=KeyField
  endif
  GetNextId=CurrId
end function

Запросы:
1)
Код: plaintext
select GetNextId(Код) as Id, * into temp1 from Таблица1 order by Код
2)Сбросить Kod, хоть так: select GetNextId(Null)
3)
Код: plaintext
select GetNextId(Код) as Id, * into temp2 from Таблица2 order by Код
4)
Код: plaintext
1.
2.
insert into temp1 (Id)
select temp2.Id from temp2 left join temp1 on ((temp2.Код=temp1.Код) and (temp2.Id=temp1.Id))
where temp1.Id is null
и
5)
Код: plaintext
1.
select temp1.*, temp2.* 
from temp1 left join temp2 on ((temp2.Код=temp1.Код) and (temp2.Id=temp1.Id))
После (или перед) работы не забываем удалять temp1/2.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836731
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
31.
32.
SELECT Table1.Код, 
    IIf([Table2].[Дата]=
            (Select Min(t2.Дата) 
            From Table2 t2 
            Where t2.Код=Table1.Код),
        [Table1].[Дата],Null) AS Дата1, 
    IIf([Table2].[Дата]=
            (Select Min(t2.Дата) 
            From Table2 t2 
            Where t2.Код=Table1.Код),
        [Table1].[Акт],Null) AS Акт, 
    IIf([Table2].[Дата]=
            (Select Min(t2.Дата) 
            From Table2 t2 
            Where t2.Код=Table2.Код),
        [Table1].[Выполнение],Null) AS Выполнение, 
    IIf([Table1].[Дата]=
            (Select Min(t1.Дата) 
            From Table1 t1 
            Where t1.Код=Table2.Код),
        [Table2].[Дата],Null) AS Дата2, 
    IIf([Table1].[Дата]=
            (Select Min(t1.Дата) 
            From Table1 t1 
            Where t1.Код=Table2.Код),
        [Table2].[пп],Null) AS пп, 
    IIf([Table1].[Дата]=
            (Select Min(t1.Дата) 
            From Table1 t1 
            Where t1.Код=Table2.Код),
        [Table2].[Оплата],Null) AS Оплата
FROM Table1 INNER JOIN Table2 ON Table1.Код = Table2.Код
ORDER BY Table1.Код, Table1.Дата, Table2.Код, Table2.Дата;

можно как-нить заоптимизировать
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836737
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну на запрос(Запрос2) раз самой лениво
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836782
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Shark
По датам объединять не надо, судя по примеру.

2ЛП
Что это было? :))
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836793
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, точно.
Скажи тогда словами, че надо то. Как оплата должна догадаться по какому она акту если их Н? Фифом?
Они сами не знают чего хочут:^)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836794
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeoЧто это было? :))
Запрос. А что еще это могло быть?
Выдает что затребовано.
Таблицы только называются Table1/2 вместо Таблица1/2, ну и поле п\п без слэша.

Конечно, его бы упростить, но тогда придется на подзапросы бить
Или Select From (Select) использовать
Или еще как.
Лениво красивости наводить :)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836801
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЛП
"FROM Table1 INNER JOIN Table2 ON Table1.Код = Table2.Код"

Не попадут записи с кодом, который есть только в одной из таблиц.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836805
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не попадут записи с кодом, который есть только в одной из таблиц.
А по приведенным данным не видно, что такие записи могут быть. Что попросили - то и сделал.
(архив не скачивал)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836810
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и даже если такие записи могут быть - не сказано как их обрабатывать
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836815
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и я свое художество приложу
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836818
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорныйи даже если такие записи могут быть - не сказано как их обрабатывать
Бог с ним, но количество записей с одинаковыми кодами будет перемножаться. Т.е. если в 1-й и 2-й таблицах по 2 записи с кодом "2", то на выходе их будет 4.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836821
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже верно. И тоже непонятно, что же в таком случае хотят получить.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836825
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ведь не придерешься...
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836833
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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 Таблица1.Код, Таблица1.Дата, Таблица1.Акт, Таблица1.Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица1 LEFT JOIN 
(SELECT Таблица2.* FROM 
  Таблица2 
  INNER JOIN 
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) Z
  ON 
  Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
) T2
ON 
Таблица1.Код=T2.Код AND Таблица1.Дата=T2.Дата 

UNION ALL

SELECT Таблица2.Код, null as Дата, null as Акт, null as Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица2 LEFT JOIN 
(select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN Таблица2 Y
ON X.Код=Y.Код AND X.Дата<=Y.Дата
GROUP BY X.Код, X.Дата
) Z
ON 
Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
WHERE  Z.Код is null


И чего париться?
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836863
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 alex2
От дат все-таки плясать не нужно, судя по примеру.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836866
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что хотим получить: (как мне нравиться, когда меня во множественном числе поминают)
Есть подрядчик
Есть договор
Есть работы, воплненненные по этому договору
есть платежи произведенные по нему же
Код Это ID договора
Надо
На любой отобранный период отобразить все платежи и все акты выполненных работ
Отобразить их друг под другом не проблема,
Код: plaintext
1.
2.
3.
4.
5.
выполнение
                 платеж
выполнение
                 платеж
выполнение
                 платеж
Но не по людски это
поэтому есть необходимость отобразить это
выполнение платеж, причем количество выполнений и платежей в периоде хаотичное
Спросибо за примеры попробую все по очереди
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836875
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shark
Проглядел пост.
Хотят, судя по всему, таблицу вида один счет - одна оплата. Зачем - ума не приложу, скорее всего, как переходный этап к другой постановке задачи.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836901
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Но не по людски это

Непонятно, как распределять платежи между этапами. По людски- показать ДВЕ таблички- отдельно акты, отдельно оплаты. Тк связи между ними нет.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836909
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Excel этот отчет надо делать, а не на SQL
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836941
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расказываю подробно, может я вообще не с той стороны подошла
Вся информация по движению выполнения и оплаты хранится в одной таблице
структура
КодДоговора
НомерАкта
Выполнение
Дата
НомерПлатежки
Оплата
КодОбъекта
КодСтатьиЗатрат
и ток далее.
Как правило, данные требуются по договору, поэтому гуппировкой собираются без проблем, за исключением такого отчета, как я привела выше.
Такой отчет есть
Данные по договору а главном,
а внизу два подотчета,
один отображает выполнение, второй платежи.
Все было замечательно,
Только возникло необходимость этот отчет иметь в Exsele
И начались заморочки.
Сгруппировать я могу только по коду договора
Я запросами отбираю платежи за период
и выполнение за период,
а далее, как раз и надо обработать, чтоб платежи и выполнение встали рядом,
и отсортировались по дате
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836956
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я и говорю, Excel в руки и вперед, ручками.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836968
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле Excel.Application
:-)
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32836971
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бегаем по рекордсетам и заполняем Excel
Добежали до договора, вывели про него все платежи и акты и тд.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32837030
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и так, конечно, только это будет минут на дцать...
Попробую
Спасибо за поддержку
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32837111
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>как раз и надо обработать, чтоб платежи и выполнение встали рядом

те пронумеровать их надо. Если платежи и выполнение будут пронумерованы внутри одного договора, то дальше запросик как в моем письме(только вместо даты наш вновь сформированный номер) работает. Нумерация быстрее будет, если ее делать не SQL, а ручками внутри рекордсета в табличке.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32837149
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато я теперь вложенные запросы умею делать и счетчик УРАА!!!
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32837176
Фотография Shurgenz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
те пронумеровать их надо

у меня нумеруются...

а лучше запрос алекса2 возьмите... меня, к примеру, парило одним запросом писать, хотя, можно было
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32837842
Michello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня очень похожий вопрос.
Если взять данные Ирчи - Нужно просуммировать денежные величины в "Таблице1" и "Таблице2", а затем посчитать отклонение одного от другого (т.е. вычесть одно из другого). Стандартными способами Акса получается описанная выше лабуда.

aleks2И чего париться?
Код: plaintext
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.
SELECT Таблица1.Код, Таблица1.Дата, Таблица1.Акт, Таблица1.Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица1 LEFT JOIN 
(SELECT Таблица2.* FROM 
  Таблица2 
  INNER JOIN 
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) Z
  ON 
  Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
) T2
ON 
Таблица1.Код=T2.Код AND Таблица1.Дата=T2.Дата 

UNION ALL

SELECT Таблица2.Код, null as Дата, null as Акт, null as Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица2 LEFT JOIN 
(select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN Таблица2 Y
ON X.Код=Y.Код AND X.Дата<=Y.Дата
GROUP BY X.Код, X.Дата
) Z
ON 
Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
WHERE  Z.Код is null
2 Aleks2
Ваш вариант, кажется, решает проблему, но, поскольку я не очень продвинут в запросах, не могли бы Вы описать Ваши действия в приведенном запросе (зачем нужен каждый шаг?).
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32837850
Michello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В догонку.

И как для данного запроса сделать группировку? Куда нужно вставить параметры группировки?
Спасибо!
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32838045
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>У меня нумеруются
Это правда, но как то сложно и неправильно. Например подразумевается, что все акты и счета за разные даты.. Их надо пронумеровать ДЛЯ КАЖДОГО ДОГОВОРА ОТДЕЛЬНО, а потом сделать фулл джойн как у меня. Мне так кажется.
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32838075
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код, Дата из Таблица1 связывается с ближайшей следующей Датой для такого же кода из Таблица2.
Короче платеж привязывается к ближайщей предыдущей дате акта о выполнении.
Код: plaintext
1.
2.
3.
4.
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) 

Выдираем из Таблица2 только те строки, что удалось привязать к актам выполнения.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
(SELECT Таблица2.* FROM 
  Таблица2 
  INNER JOIN 
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) Z
  ON 
  Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
) T2

Те строки, что удалось привязать к актам выполнения объединяем с соответствующими актами.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT Таблица1.Код, Таблица1.Дата, Таблица1.Акт, Таблица1.Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица1 LEFT JOIN 
(SELECT Таблица2.* FROM 
  Таблица2 
  INNER JOIN 
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) Z
  ON 
  Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
) T2
ON 
Таблица1.Код=T2.Код AND Таблица1.Дата=T2.Дата 

Те строки, что НЕудалось привязать к актам выполнения.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Таблица2.Код, null as Дата, null as Акт, null as Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица2 LEFT JOIN 
(select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN Таблица2 Y
ON X.Код=Y.Код AND X.Дата<=Y.Дата
GROUP BY X.Код, X.Дата
) Z
ON 
Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
WHERE  Z.Код is null

Объединяем
Те строки, что удалось привязать к актам выполнения.
и
Те строки, что НЕудалось привязать к актам выполнения.

Код: plaintext
UNION ALL
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32839496
Michello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2
Код: plaintext
UNION ALL
Мощно!

Попробовал. Оказывается, все, что мне нужно, - это ф-ия UNION.
Хорошо, что я увидел Ваши "null as...". Вместо "null" я поставил число "0" и вычисления стали правильными.
Спасибо!
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Странный запрос, или как извратиться
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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