Средства разработки запросов к БД Хоптынец Владимир Владимирович Спецвыпуск: Хакер, номер #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) |