Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2010, 19:49   #1
shefus
 
Регистрация: 11.11.2010
Сообщений: 9
Вопрос Связка двух запросов

Добрый день! Сразу скажу – я не профессионал. Встал вопрос переноса БД с Access (mdb) на SQL Server 2005 с клиентом на Access (adp). Проблема в следующем:
В MSA была связка запросов:

Запрос1
Код:
SELECT Cross.№  FROM [Cross] WHERE [OE] Like "*" & Forms!Магазин!Поле105 & "*"
GROUP BY Cross.№;

Запрос2
Код:
SELECT [Статистика].№, [Запрос1].№ 
FROM Запрос1 LEFT JOIN [Статистика] ON [Запрос1].№ = [Статистика].№ 
WHERE ((([Статистика ].№) Is Not Null)) ORDER BY [Статистика].Наименование;
Т.е на основе Запрос1 (сгруппированного и отобранного) отбираются записи из сложного запроса [Статистика] по полю [№]

SQL Server только начал осваивать. Поэтому:
1. Как я понял Запрос1 нельзя делать хранимой процедурой, т.к. результаты выполнения её нельзя использовать как таблицу для запроса2. Правильно?

2. Так же не получится создать представление, т.к. в представлении нельзя использовать параметры (Forms!Магазин!Поле105 заменён на @Поле105). Так?

Тогда, наверно, есть следующие варианты:
1. Собрать всё в один запрос, но хотя SQL не очень силён, думаю, что в этом варианте не получится
2. В одной хр. проц. выполнить сначала Запрос1 и использовать результат в Запросе2 . Но не совсем пойму как  Хотя бы какой-нибудь примерчик….
3. Запросом1 создать временную таблицу - #Запрос1 и использовать её в Запросе2 (или как вариант – объект TABLE). Но …
А) Не очень хочется использовать временные таблицы
Б) Что будет если 5 пользователей обратятся к данной процедуре одновременно – у каждого пользователя свой параметр @Поле105 – т.е. временная таблица должна быть разная для каждого пользователя.

Подскажите, как быть?

Последний раз редактировалось Stilet; 11.11.2010 в 19:52.
shefus вне форума Ответить с цитированием
Старый 11.11.2010, 19:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
1. Как я понял Запрос1 нельзя делать хранимой процедурой, т.к. результаты выполнения её нельзя использовать как таблицу для запроса2. Правильно?
Нет. Вложенные запросы еще не отменяли, а тем паче если в 2005ке уже появились функции-таблицы.
Цитата:
2. Так же не получится создать представление, т.к. в представлении нельзя использовать параметры (Forms!Магазин!Поле105 заменён на @Поле105). Так?
В представлении нельзя, но:
1) Поинтересуйся есть ли возможность в 2005ке создать function returned table
2) Ты всегда можешь прикрутить к вьюшке через WHERE новый набор условий, я правда не знаю как MSSQL оптимизирует такие вью но можно попробовать посчитать стоимость такого запроса, и если она не велика ничего страшного.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связка Excel Foxx Microsoft Office Excel 6 17.02.2014 15:49
Связка процессов MCLotos Операционные системы общие вопросы 2 10.04.2010 20:22
помогите с совмещением двух запросов. SQL Server S_Yevgeniy БД в Delphi 8 21.12.2009 21:13
Связка двух документов stas77 Microsoft Office Excel 21 09.10.2009 13:43
Связка Прогрес-бар и куча запросов не работает. ( Avorsa Microsoft Office Excel 1 22.07.2009 18:21