Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

Средства разработки запросов к БД

Хоптынец Владимир Владимирович

Спецвыпуск: Хакер, номер #052, стр. 052-060-2


Сам Interbase уже радикально отличается от Access хотя бы тем, что это действительно СУБД, предназначенная для создания клиент-серверных решений. Здесь можно решать задачки покруче. Правда, если в Access присутствуют возможности создания необходимого интерфейса и отчетов для клиента (как говорится, полный фарш), то здесь придется поработать не только руками, но и предварительно головой, подключив к работе по созданию клиентской части хотя бы Delphi.

Очередной наглядный пример - разработка довольно простого запроса по базе данных недвижимости. Задача – показать всех людей, которые после приватизации квартиры от исполкома уже продали ее или продали частично. Не будем акцентировать внимание на особенностях самой базы данных, просто сосредоточимся на порядке работы с данным средством. Заходишь в ibExpert, грузишь SQL Builder и вытягиваешь нужные таблицы. Теперь определяешь связи между таблицами и отмечаешь крестами поля, необходимые для вывода. Они появляются внизу на вкладке Selection.

Заходишь на вкладку Criteria и добавляешь нужные условия к соответствующим полям.

А на закладке Edit уже имеешь сгенерированный без твоего участия код. И все культурно работает.

SELECT VLASN.PR, VLASN.IM, VLASN.PB, PRAVA.OLDCL, DOCUMENT.IDOLDT

FROM PRAVA

INNER JOIN VLASN ON (PRAVA.IDVLASN = VLASN.IDVLASN)

INNER JOIN DOCUMENT ON (PRAVA.IDDOC = DOCUMENT.IDDOC)

WHERE

(

(DOCUMENT.IDOLDT = 'П')

and

(PRAVA.OLDCL IS NOT NULL )

)

Жмешь на зеленый треугольник – получаешь результат. В каждой таблице около 300000 записей. На закладке Performance Anlisys есть очень полезная информация о быстродействии и количестве чтений с каждой таблицы. Не все средства настолько полезны.

Довольно неплохое средство, но создавать в нем можно только запросы для отображения данных. Процедуры же придется писать руками в специально отведенном для этого редакторе. Для анализа запросов в Microsoft SQL Server используется средство SQL Query Analizer. Попробуем с помощью этого конструктора создать следующий SQL-запрос:

SELECT VLASN.PR, DOCUMENT.IDOLDT, PRAVA.D1, PRAVA.D2, PRAVA.OLDCL, PRAVA.OLDDL

FROM VLASN

INNER JOIN PRAVA ON (VLASN.IDVLASN = PRAVA.IDVLASN)

INNER JOIN DOCUMENT ON (PRAVA.IDDOC = DOCUMENT.IDDOC)

GROUP BY VLASN.PR, DOCUMENT.IDOLDT, PRAVA.D1, PRAVA.D2, PRAVA.OLDCL, PRAVA.OLDDL

HAVING

(

(COUNT(VLASN.PR) > 10)

)

Казалось бы, чего проще – повторяешь все шаги предыдущего примера, только вместо вкладки Criteria используешь Grouping criteria.

Переходишь на вкладку Edit, чтобы увидеть, что же этот волшебник сотворил. И видишь:

SELECT VLASN.PR, DOCUMENT.IDOLDT, PRAVA.D1, PRAVA.D2, PRAVA.OLDCL, PRAVA.OLDDL

FROM VLASN

INNER JOIN PRAVA ON (VLASN.IDVLASN = PRAVA.IDVLASN)

Назад на стр. 052-060-1  Содержание  Вперед на стр. 052-060-3