Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 01.09.03 09:04

Обновился дайджест по FAQ. Скачать можно здесь
Вышел очередной дайджест форумов. Скачать можно здесь
Кое-что из нашей кладовки   |x|
Лучшее из нашего FAQ   |x|
SQL
»»» Merle Corey (07.07.00 12:36)
Существует следующая проблема: есть 4 таблицы в БД ORACLE -- Карточки, Пересылки, Исполнители и Департаметы. Связь сл. : К каждому департаменту привязаны исполнители. С исполнителями связаны пересылки. Ну а Пересылки связаны с карточками.
Необходимо подсчитать кол-во карточек для каждого департамента. Как это сделать пошустрее.

»»» kingdom - kingdom@tepkom.ru (08.07.00 21:27)
У меня были похожие проблемы, пришлось делять вложенный СКуЛь запрос типа select ... from (select .. from (select ...)) ну и применить соответсвующую функцию для подсчета (если очень дано могу позже написать как сейчас не помню),   ... ну млм же вот в Access можно делать запросы прямо в самой MS-Access к которым можно обращаться как к обычным таблицам только понятно их физически нет, так вот в запрос включить все столбцы Карточек и столбец с ID из Департамента тогда все должно быть быстро, попробуй...

-= Из конференции сайта MASTERS OF DELPHI (http://delphi.mastak.com) =-

Комментарий: "Anton Khalikov" (admin@karat-e.medialt.ru)

Прикольно, но чуваки забывают, что есть еще понятие view, которое как раз и реализует то же, что и "ну млм же вот в Access можно делать запросы прямо в самой MS-Access к которым можно обращаться как к обычным таблицам только понятно их физически нет"
т.е. пишется просто - create view test as select ...
и дальше select ... from test, ...
ну а в крайнем случае можно написать хранимую процедуру.


Комментарий от "Vladimir Krinitsin" (vvkrinitsin@hotmail.com)
обычно делают так:

select count(Карточки.*), Деп.Имя from Карточки
join Пересылки on ... join Исп. on... join Деп on...
group by Деп.Имя


Комментарий от "Grigory V Dutikov" (dutikov@accum.kursk.ru)
Правильно для ORACLE:

create view CountCard
as select count( k.*), d.DepName
from Департамент d, Исполнители e, Пересылки p, Карточки k
where d.DepName = e.DepName
and   e.ExeName = p.ExeName
and   p.KardName = k.KardName

P.S.
Если на сервере русская кодировка, то имена таблиц и полей можно
писать по русски и без кавычек!!! в Oracle8i и выше

---- Комментарий от Michael Strelkov ----
В запросе от "Grigory V Dutikov" пропущен group by d.DepName.
То есть, должно быть так:

create view CountCard as
select d.DepName, count( k.*) as Number_of_Kards
from Департамент d, Исполнители e, Пересылки p, Карточки k
where d.DepName = e.DepName
       and   e.ExeName = p.ExeName
       and   p.KardName = k.KardName
group by d.DepName.

Но если эти таблички достаточно большие, то работать это может довольно медленно.
Но можно слегка оптимизировать:
1) если поля связи не описаны явно как foreign keys, или по ним нет индексов, то создайте их.
2) в предл. from разместите таблицы по убыванию их размеров.
3) в предл. where разместите условия по and, так, чтобы в конце были те, по которым производится максимальный отсев лишних записей, т.к and обрабатываются справа налево.

Если все это не поможет, то надо поработать над исходными таблицами. Возможно, они не нужны целиком в данном запросе, и есть возможность что-то из них выбросить (наверняка есть лишние столбцы, т. к. из каждой таблицы нужны только столбцы для связи, и, особенно лишние строки). Тогда в запросе в предл. from, вместо указания имен таблиц XXXXXXXX x, напишете такие некореллированные подзапросы:
(select YYYYY from XXXXXX where <условие, которое оставляет только нужные строки>) x. Если Вам удастся таким образом существенно уменьшить размеры используемых в запросе таблиц, скорость выполнения может увеличиться на 1-3 порядка.

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
У нас большой выбор статей   |x|
Создание компонентов в Run-Time.
Итак, рассмотрим на первый взгляд сложный вопрос о создании компонентов в Run_time (то есть во время работы программы). Но на самом деле этот вопрос довольно просто решается.
Давайте вместе попробуем написать код, чтобы при нажатии на кнопку на  форме появлялось ...
Новинки книжного рынка   |x|
Сборник задач по программированию
Программирование — процесс творческий и увлекательный. Этому обучают в школах, в техникумах, в вузах и других учебных заведениях. Но не всегда на занятиях есть время отработать изученное на практике. Научиться программированию, можно только решая конкретные задачи. Этот сборник содержит более 1500 задач по всем основным темам программирования. Краткая теоретическая часть в начале каждого раздела поможет изучающим Турбо Паскаль разобраться в применении того или иного алгоритма, а тем, кто изучает другой язык программирования, — без особых сложностей перевести приведенное решение на нужный язык. Освещение основ языка Паскаль позволяет использовать книгу как справочник, но это ни в коей мере не говорит о ее узкой направленности только на Паскаль, так как практически все приведенные задачи могут быть решены с помощью других языков программирования. Основная цель этой книги — помочь читателям: в практическом овладении языков программирования; в изучении и освоении основных методов и приемов программирования; в получении навыков в отладке и тестировании приложений.
Автор: Гуденко Д. А., Петроченко Д. В.
Другие сайты о DELPHI   |x|
Бесплатная замена для Делфи :)
На этом сайте можно скачать оболочку для Freepascal :)
Используя бесплатную оболочку плюс бесплатный компилятор - можно писать коммерческие дельфийские проги :)
там GPL лицензия
сам ...

» Оценка сайта: 2
Опрос населения :)
Новый журнал для программистов "RSDN Magazine". За какую сумму вы готовы его покупать?
»»» 80р.
»»» 100р.
»»» 120р.
»»» 150р.
Для души

Хокку дня
Для силы воли
Послабленье -
Бабье лето.

Афоризмы
Наука – знание того, как правильно организовать своё незнание.

Фраза дня
Человеку свойственно ошибаться. И он пользуется этим свойством часто и с удовольствием.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Мичигане (США) женщина не может постричь волосы без предварительного согласия мужа.
В Пенсильвании (США) всем водителям, оказавшимся на сельских дорогах ночью, предписывается- останавливаться через каждую милю и стрелять из ракетницы, ждать 10 минут пока с дороги уйдет скот, который мог на ней оказаться, и затем ехать дальше..

И на закуску коротенький анекдот
Добрый молодец Пяткин тщательно продумал, как он убьёт жену и спрячет тело... Только после этого он сделал первый шаг - женился.

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=2345312


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное