Разделение длинных запросов для удобства чтения / обслуживания - PullRequest
3 голосов
/ 23 марта 2011

Я унаследовал базу данных Access, у которой есть запрос, который ВЫБИРАЕТ более 50 столбцов.Даже в средстве графического дизайна запросов MS Access слишком много информации, чтобы обрабатывать IMO.

Быстрый отказ от ответственности - у меня есть опыт программирования, но почти нет опыта работы с базами данных.

Для этой конкретной задачи мне нужны данные из 50+ столбцов.Есть ли лучший способ получить эту информацию, чем один огромный запрос?

Я немного растерялся, как поступить.Похоже, что в Интернете все согласны с тем, что запросы SQL должны быть относительно небольшими и хорошо отформатированными.Я просто не понимаю, как применять этот принцип, когда вам нужно так много полей.Могу ли я использовать множество простых запросов с UNION или INSERT INTO временной таблицей?Любое предложение или RTFMs?

РЕДАКТИРОВАТЬ: Больше информации о приложении.Данные распределены по 14 таблицам.Я собираю данные, чтобы записать их во внешний файл, содержащий более 50 полей в строке (например, CSV-версия электронной таблицы).

РЕДАКТИРОВАТЬ: Управление и отладка SQL-запросов в MS Access похоже, что содержит соответствующие советы.

Ответы [ 5 ]

1 голос
/ 24 марта 2011

Я думаю, вы вообще ни о чем не беспокоитесь. Вытащить 50 полей из 14 таблиц для вывода в плоский файл - это вообще ничего. Дело в том, что вы намеренно денормализуете данные, потому что вам нужен вывод в виде плоского файла. По определению это будет означать много столбцов.

Как уже говорили другие, 50 столбцов в одной таблице были бы необычными (хотя и не обязательно ошибкой проектирования), но в описываемой вами ситуации я вообще не вижу проблемы.

Короче говоря, это звучит как идеальная настройка, и мне просто интересно, с чего вы взяли, что это проблема для начала.

1 голос
/ 23 марта 2011

Я бы повторил большинство комментариев о необходимости более 50 столбцов при каждом запуске запроса.

Однако, если из-за уродства запроса вы получаете более 50 столбцов, вызывающих ваше горе, вы можете создать представление для этого запроса. Это не избавляет от того факта, что вы имеете дело с кучей данных, но может инкапсулировать большого волосатого зверя в SQL-выражении.

0 голосов
/ 23 марта 2011

Если ваши данные поступают из нескольких таблиц, вы можете использовать Общие табличные выражения , чтобы разделить запрос на группы.

0 голосов
/ 23 марта 2011

Если в одной таблице 50 столбцов, структура базы данных в лучшем случае сомнительна. Это может фактически означать, что вам придется справляться с не столь элегантными решениями.

Вам действительно нужны все эти данные одновременно? Если нет, то, вероятно, лучше всего SELECT данные, которые вам нужны в данный момент времени. Вы должны предоставить больше информации о реальном задании.

0 голосов
/ 23 марта 2011

Если вы извлекаете данные из всех столбцов, вы можете написать SELECT * FROM ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...