|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Здравствуйте, уважаемые гуру и знатоки SQL. Столкнулся с нетривиальной задачей для меня. Решить правильно у меня не выходит. В БД находятся две таблицы. Мне необходимо составить запрос, показывающий все перестановки некоторых полей из первой таблицы, используя условия из второй таблицы. Запросы я составил, но "дьявол кроется в деталях", как говорится. Время выполнение этих запросов ... Даже не знаю как и сказать... В общем, виснет у меня Access. Либо вычислительная мощность Access-а не позволяет ему справиться с этими запросами, либо составлены они неправильно. А возможно нужен совершенно другой подход. Самый "рабочий" вариант у меня, это запрос AllResult (для всех записей второй таблицы) и CertainValueResult (для определённой записи второй таблицы). AllResult я даже протестировать не могу. А для CertainValueResult время выполнения, по моему, в лучшем случае ЧАС! Ведь если все поля будут выбраны, то количество перестановок должно быть около 22 млн! Когда Вы откроете БД, то поймёте лучше. А пока: во второй таблице (Table - B) хранятся данные логического типа для выбора полей из первой таблицы (Table - A) для генерации перестановок. Если Да - поле участвует в перестановках, если нет - пустое значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 03:43 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Сева Новгородцев, 22 млн записей .... ну, ты даешь .... оперативная память то компьютера у тебя , наверное, не безгранична? а? и файл базы данных , наверное, имеет ограничение в 2 Гб, не? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 07:46 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Да, я понимаю, что это перебор. Но, как я думаю, дело не в количестве записей (в первую очередь). Например, для записи № 33 из таблицы "Table - B" должно быть всего лишь 168. Но и здесь зависает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 09:04 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
авторКогда Вы откроете БД, то поймёте лучше. Открыл... да.... 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.
Вот такой запрос вместо вашего алл-реса работает за секунду. Подумайте, почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 11:38 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Alex Pancho, большое спасибо за ответ и потраченное время. 1. Ваш запрос - это аналог таблицы [Table - B]. Я не понял, для чего он нужен. 2. Пример того, что я хочу получить на рисунке. Код: plsql 1. 2. 3.
3. БД мне попалась в этом виде. Менять ничего мне нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 12:28 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Alex Pancho- Нормализации нет вообще от слова совсем.... - Сева Новгородцев...3. БД мне попалась в этом виде. Менять ничего мне нельзя....-есть самолет, но он не летает -так приделайте крылья -не мне менять ничего нельзя -а без крыльев он не взлетит,однако ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 12:55 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Уверен, что "предыдущий оратор" даже БД не открыл. Лишь бы ляпнуть... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 15:42 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Спасибо конечно, но для чего Вы демонстрируете мне [Table - A]? Я из неё получаю данные для группировки (запросы TP(i)). Данные получаю корректные (можете мне поверить). Больше мне эта таблица не нужна. Остальная работа должна заключаться в группировке результатов запросов TP(i), согласно условиям из таблицы [Table - B]. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 16:10 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
Сева Новгородцев... А возможно нужен совершенно другой подход... Вы неправы-БД я смотрел.С такой структурой,да на больших объемах(ведь при меньшем количестве данных вопрос не возникал) не взлетит ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 16:13 |
|
Перестановки по условию
|
|||
---|---|---|---|
#18+
sdku, извините, погорячился... Может быть попробовать с помощью vba формировать запросы (для каждой строки [Table - B]) только с действующими TP (=True); таким образом, отпадают постоянные проверки условий. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 16:22 |
|
|
start [/forum/topic.php?fid=45&msg=39259336&tid=1613444]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 335ms |
total: | 465ms |
0 / 0 |