Выбор данных из внешней базы данных
Иногда бывает необходимо выполнять запросы к базам данных, не открывая их. Для этого в инструкции SELECT в предложении FROM после имен запрашиваемых полей можно указать полное имя файла с базой данных. Для тестирования запросов к внешней базе данных следует создать пустую (без таблиц) базу данных и написать в этой базе, например, следующий запрос (результат полностью совпадает с таблицей, представленной на рис. 15.18): SELECT НаимТовара AS [Наименование товара], Цена1 AS [Цена закупочная] FROM Товары IN 'c:\фирма.mdb' WHERE НаимТовара LIKE "*мишень*" Не следует забывать указывать путь к внешней базе данных в подзапросе. Следующий запрос дает в результате ту же таблицу, что представлена на рис. 15.40. SELECT b.НаимТовара AS Наименование, SUM(a.Количество) AS Количество, Format(SUM(a.Количество*a.ЦенаОперации), "### ##0.00р") AS Сумма FROM НаклСпецификации AS a, Товары AS b IN 'c:\фирма.mdb' WHERE a.КодТовара=b.КодТовара AND a.КодПодразделения ="0429" AND STR(a.Дата) & STR(a.Номер) IN (SELECT STR(Дата) & STR(Номер) FROM НаклЗаголовки IN 'c:\фирма.mdb' WHERE Дата = CDate("11/02/2002") AND ТипНакладной=5) GROUP BY b.НаимТовара В сложном запросе для каждого предложения FROM (т.е. для каждого SELECT -запроса) может быть указана своя внешняя база данных. Например: SELECT b.НаимТовара AS Наименование, SUM(a.Количество) AS Количество, Format(SUM(a.Количество*a.ЦенаОперации),"### ##0.00р") AS Сумма FROM НаклСпецификации AS a, Товары AS b IN 'c:\фирма.mdb' WHERE a.КодТовара=b.КодТовара AND a.КодПодразделения ="0429" AND STR(a.Дата) & STR(a.Номер) IN (SELECT STR(Дата) & STR(Номер) FROM НаклЗаголовки IN 'c:\фирма2.mdb' WHERE Дата = CDate("11/02/2002") AND ТипНакладной=5) GROUP BY b.НаимТовара Перед выполнением этого запроса таблица НаклЗаголовки была перенесена в базу данных файла фирма2.mdb. Если в одном из SELECT -запросов используется текущая база, то ее указывать, как обычно, не нужно. Например: SELECT b.НаимТовара AS Наименование, SUM(a.Количество) AS Количество, Format(SUM(a.Количество*a.ЦенаОперации),"### ##0.00р") AS Сумма FROM НаклСпецификации AS a, Товары AS b IN 'c:\фирма.mdb' WHERE a.КодТовара=b.КодТовара AND a.КодПодразделения ="0429" AND STR(a.Дата) & STR(a.Номер) IN (SELECT STR(Дата) & STR(Номер) FROM НаклЗаголовки WHERE Дата = CDate("11/02/2002") AND ТипНакладной=5) GROUP BY b.НаимТовара; Перед выполнением этого запроса таблица НаклЗаголовки была перенесена в базу данных, из которой выполняется запрос.
|