powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перестановки по условию
12 сообщений из 12, страница 1 из 1
Перестановки по условию
    #39259272
Сева Новгородцев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые гуру и знатоки SQL. Столкнулся с нетривиальной задачей для меня. Решить правильно у меня не выходит. В БД находятся две таблицы. Мне необходимо составить запрос, показывающий все перестановки некоторых полей из первой таблицы, используя условия из второй таблицы. Запросы я составил, но "дьявол кроется в деталях", как говорится. Время выполнение этих запросов ... Даже не знаю как и сказать... В общем, виснет у меня Access. Либо вычислительная мощность Access-а не позволяет ему справиться с этими запросами, либо составлены они неправильно. А возможно нужен совершенно другой подход.

Самый "рабочий" вариант у меня, это запрос AllResult (для всех записей второй таблицы) и CertainValueResult (для определённой записи второй таблицы). AllResult я даже протестировать не могу. А для CertainValueResult время выполнения, по моему, в лучшем случае ЧАС! Ведь если все поля будут выбраны, то количество перестановок должно быть около 22 млн!

Когда Вы откроете БД, то поймёте лучше. А пока: во второй таблице (Table - B) хранятся данные логического типа для выбора полей из первой таблицы (Table - A) для генерации перестановок. Если Да - поле участвует в перестановках, если нет - пустое значение.
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259290
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сева Новгородцев,
22 млн записей .... ну, ты даешь .... оперативная память то компьютера у тебя , наверное, не безгранична? а? и файл базы данных , наверное, имеет ограничение в 2 Гб, не?
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259336
Сева Новгородцев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я понимаю, что это перебор. Но, как я думаю, дело не в количестве записей (в первую очередь). Например, для записи № 33 из таблицы "Table - B" должно быть всего лишь 168. Но и здесь зависает.
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259467
Alex Pancho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторКогда Вы откроете БД, то поймёте лучше.

Открыл... да.... 22 миллиона записей вам явно будет мало...
Вам эту базу готовую всунули ии сами старались?
Нормализации нет вообще от слова совсем.
Вот зачем вам писать одиннадцать запросов на выборку поля, отражаемого значения и условия, когда это можно сделать в одном запросе? Имена таблиц с пробелами и знаками минут - зло. Переименуйте.
Дальше, у вас результат селекта запросов - 4 поля, а подставляете вы в одно. И какое Ац должен выбрать по вашему? там должен быть инер джоин а не ииф, может тогда заработает.
Короче, попинал я вашу базу, но суть запроса и структуру не понял, так что так...
Код: 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.
SELECT DISTINCT 
IIf(TabB.TP1=True,TabB.TP1,0) AS GTP1, 
IIf(TabB.TP1=True,TabB.TP1,0) AS TP1, 
IIf(TabB.TP2=True,TabB.TP2,0) AS GTP2, 
IIf(TabB.TP2=True,TabB.TP2,0) AS TP2, 
IIf(TabB.TP3=True,TabB.TP3,0) AS GTP3, 
IIf(TabB.TP3=True,TabB.TP3,0) AS TP3, 
IIf(TabB.TP4=True,TabB.TP4,0) AS GTP4, 
IIf(TabB.TP4=True,TabB.TP4,0) AS TP4, 
IIf(TabB.TP5=True,TabB.TP5,0) AS GTP5, 
IIf(TabB.TP5=True,TabB.TP5,0) AS TP5, 
IIf(TabB.TP6=True,TabB.TP6,0) AS GTP6, 
IIf(TabB.TP6=True,TabB.TP6,0) AS TP6, 
IIf(TabB.TP7=True,TabB.TP7,0) AS GTP7, 
IIf(TabB.TP7=True,TabB.TP7,0) AS TP7, 
IIf(TabB.TP8=True,TabB.TP8,0) AS GTP8, 
IIf(TabB.TP8=True,TabB.TP8,0) AS TP8, 
IIf(TabB.TP9=True,TabB.TP9,0) AS GTP9, 
IIf(TabB.TP9=True,TabB.TP9,0) AS TP9, 
IIf(TabB.TP10=True,TabB.TP10,0) AS GTP10, 
IIf(TabB.TP10=True,TabB.TP10,0) AS TP10, 
IIf(TabB.TP11=True,TabB.TP11,0) AS GTP11, 
IIf(TabB.TP11=True,TabB.TP11,0) AS TP11
FROM TabB;


Вот такой запрос вместо вашего алл-реса работает за секунду. Подумайте, почему.
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259531
Сева Новгородцев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Pancho, большое спасибо за ответ и потраченное время.
1. Ваш запрос - это аналог таблицы [Table - B]. Я не понял, для чего он нужен.
2. Пример того, что я хочу получить на рисунке.
Код: plsql
1.
2.
3.
SELECT DISTINCT [Table - B].TP_PermID, IIf([Table - B].TP1=True,TP1.DisplayAs,Null) AS TP1, IIf([Table - B].TP2=True,TP2.DisplayAs,Null) AS TP2, IIf([Table - B].TP3=True,TP3.DisplayAs,Null) AS TP3, IIf([Table - B].TP4=True,TP4.DisplayAs,Null) AS TP4, IIf([Table - B].TP5=True,TP5.DisplayAs,Null) AS TP5, IIf([Table - B].TP6=True,TP6.DisplayAs,Null) AS TP6, IIf([Table - B].TP7=True,TP7.DisplayAs,Null) AS TP7, IIf([Table - B].TP8=True,TP8.DisplayAs,Null) AS TP8, IIf([Table - B].TP9=True,TP9.DisplayAs,Null) AS TP9, IIf([Table - B].TP10=True,TP10.DisplayAs,Null) AS TP10, IIf([Table - B].TP11=True,TP11.DisplayAs,Null) AS TP11
FROM TP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9, TP10, TP11, [Table - B]
WHERE ((([Table - B].TP_PermID)=[Enter certain TP_PermID: ]));


3. БД мне попалась в этом виде. Менять ничего мне нельзя.
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259563
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Pancho-
Нормализации нет вообще от слова совсем....
-
Сева Новгородцев...3. БД мне попалась в этом виде. Менять ничего мне нельзя....-есть самолет, но он не летает
-так приделайте крылья
-не мне менять ничего нельзя
-а без крыльев он не взлетит,однако
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259737
Сева Новгородцев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уверен, что "предыдущий оратор" даже БД не открыл. Лишь бы ляпнуть...
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259750
Alex Pancho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сева Новгородцев,
зря вы так, вам же ж помочь хочется.
Вот вам кортинко с подробностями


...
Рейтинг: 0 / 0
Перестановки по условию
    #39259763
Сева Новгородцев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо конечно, но для чего Вы демонстрируете мне [Table - A]? Я из неё получаю данные для группировки (запросы TP(i)). Данные получаю корректные (можете мне поверить). Больше мне эта таблица не нужна. Остальная работа должна заключаться в группировке результатов запросов TP(i), согласно условиям из таблицы [Table - B].
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259767
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева Новгородцев... А возможно нужен совершенно другой подход... Вы неправы-БД я смотрел.С такой структурой,да на больших объемах(ведь при меньшем количестве данных вопрос не возникал) не взлетит
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259774
Сева Новгородцев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, извините, погорячился...
Может быть попробовать с помощью vba формировать запросы (для каждой строки [Table - B]) только с действующими TP (=True); таким образом, отпадают постоянные проверки условий.
...
Рейтинг: 0 / 0
Перестановки по условию
    #39259835
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева Новгородцев,
не связанные таблицы-чем не Ёксель. Без изменения структуры, сколько бы Вы не изощрялись ничего не выйдет-только комп будет впадать в ступор
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перестановки по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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