powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Зависает SQL-запрос содержащий вложенный зависимый запрос
6 сообщений из 31, страница 2 из 2
Зависает SQL-запрос содержащий вложенный зависимый запрос
    #39524118
igor.kovalchukнепоймучка,

Попробовал. Зависает : (
Ну если записей много, то да, там ведь идет частичное перемножение таблиц.

Как вариант, можно делать через промежуточную/временную таблицу,
для этого в исходной таблице temp нужен Код (код записи - уникальный/счетчик)

Сначала создать времянку (temp1), записав туда результаты max-подзапроса:
Код: sql
1.
2.
3.
4.
5.
SELECT
 T.Код,
 (SELECT Max(T0.Год_вхождения) FROM firms T0 WHERE T0.KD=T.KD and T0.Год_вхождения<=T.sYear) AS Год
INTO temp1
FROM temp AS T


А потом уже делать итоговую выборку через эту времянку:
Код: sql
1.
2.
3.
4.
SELECT T.*, S.Группа
FROM
(SELECT T.*, T1.Год FROM temp AS T INNER JOIN temp1 AS T1 ON T.Код=T1.Код) AS T
LEFT JOIN firms AS S ON (T.KD=S.KD) AND (T.Год=S.Год_вхождения)


Чтобы все шевелилось побыстрее, делать это лучше в таблицах MSAccess,
имея там индексы по полям KD(типа LONG) и sYear/Год_вхождения.
...
Рейтинг: 0 / 0
Зависает SQL-запрос содержащий вложенный зависимый запрос
    #39524528
igor.kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

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

А времянка поможет ?

я почему делаю под запрос, потому что поле sYear меняет свое значение и под него каждый раз нужно вычислять поле Группа так как поле kd в таблице firms не уникально из-за того что могут быть записи с одним kd но разными Год_вхождения.
...
Рейтинг: 0 / 0
Зависает SQL-запрос содержащий вложенный зависимый запрос
    #39524541
igor.kovalchukнепоймучка,

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

А времянка поможет ?

я почему делаю под запрос, потому что поле sYear меняет свое значение и под него каждый раз нужно вычислять поле Группа так как поле kd в таблице firms не уникально из-за того что могут быть записи с одним kd но разными Год_вхождения.Ну я протестил те запросы, что выше предлагал (в temp~200K записей, в firms~10K записей). Первый запрос на создание врем.таблицы работал ~50 сек, второй запрос на выборку - секунд 30 читает, попробуйте сами.
...
Рейтинг: 0 / 0
Зависает SQL-запрос содержащий вложенный зависимый запрос
    #39524558
igor.kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

спасибо.
ваш вариант еще не пробовал. завтра потестю.

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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT first(q1.KD) AS KD, first(Area) AS fArea, first(q1.sYear) AS fsYear, last(q1.Group) AS lGroup, max(q1.DateIn) AS m_DateIn
FROM (SELECT t1.*, t2.Group, t2.DateIn FROM temp AS t1 LEFT JOIN Firms AS t2 ON t1.KD = t2.KD ORDER BY DateIn)  AS q1
WHERE q1.sYear >= q1.DateIn
GROUP BY (CSTR(q1.kd) +"-"+ CSTR(q1.sYear))

UNION 

SELECT temp.KD, temp.Area, temp.sYear , 'other' as lGroup, '01.01.1900' as m_DateIn
FROM temp LEFT JOIN Firms ON temp.[KD] = Firms.[KD]
WHERE ((Firms.KD) Is Null);
...
Рейтинг: 0 / 0
Зависает SQL-запрос содержащий вложенный зависимый запрос
    #39524616
igor.kovalchuk,

попробуй OUTER APPLY
...
Рейтинг: 0 / 0
Зависает SQL-запрос содержащий вложенный зависимый запрос
    #39524704
igor.kovalchukнепоймучка,

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

А времянка поможет ?

Это не проблема. Чтобы создать и обработать времянки в mdb-файле, сам MSAccess не нужен.
Можно все сделать в VBA Excel через объекты доступа к данным (тот же ADODB, который вы в своем коде используете).
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Зависает SQL-запрос содержащий вложенный зависимый запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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