Как написать запрос
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
Я так понимаю привести таблицу к такому виду невозможно. Тогда остается после выполнения запроса растаскивать данные по StringGrid или F1Book (в Dephi), а это займет много времени. Подскажите как можно реализовать это по другому.
Ключевые слова для поиска Cross-Tab reports.
См. например тут: http://www.databasejournal.com/features ... hp/3521101
См. например тут: http://www.databasejournal.com/features ... hp/3521101
Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
Новая проблема: помещаю код где создается VIEW в запрос в Delphi, а он не выполняется. Выдаются сообщения о синтаксических ошибках. Что делать?
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
И Еще вот что: в таблице reps в поле date может быть разное время для одной даты и при создание VIEW датам 2005-01-01 01:00:00 и 2005-01-01 02:00:00 присваиваются разные индексы, надо чтобы время не учитывалось и у этих дат был 1 код.
Зачем?! Это серверный объект. Создал один раз, как таблицу, и забыл про него. И запрос лучше всего процедурой хранимой оформить, чтобы когда понадобиться в нём что-то изменить, код дельфёвый не ковырять. Да и производительность повысится.помещаю код где создается VIEW в запрос в Delphi
Зачем тебе коды? Их нет в исходной таблице, значит и во вьюхе они лишние.и у этих дат был 1 код.
сделай во вьюху такую выборку: convert(varchar(10), report_date, 104) и join делай по этой же конструкции.
Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
Что-то с convert(varchar(10), report_date, 104) ничего не получается. Почемуто всегда в результате 0 строк. Кстати View все же создается долго. Как получить нужный результат используя вложенные запросы.
Перечитай внимательно моё сообщение. Там всё описано. Более того, вариант проверен и он работает. Но полностью код давать принципиально не хочу.Что-то с convert(varchar(10), report_date, 104) ничего не получается. Почемуто всегда в результате 0 строк
Не дольше, чем любая таблица или хранимая процедура. Подругому н-е-б-ы-в-а-е-т. Медленно только выборка из вьюхи может работать.Кстати View все же создается долго.
а) переделай структуру таблицКак получить нужный результат используя вложенные запросы.
б) используй временные таблицы. Это точно будет не быстрее создания вьюхи, но быстрее при выборке. Bulk insert (select into)ускорит заполнение временной таблицы.
Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
OK. Все работает правильно. У меня в базе 1700 работников, а период времени максимально пол года. Это выполняется 4 минуты на компе с оперативо1 1G и процессором Pentium 4 2600MHz. Это нормально.
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
Все же мне надо как-то запутить эту штуку через Deplhi, чтобы пользователь мог задать нужный период и получил на экране таблицу с результатами.
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Прошу прощения у старших, что я опять влажу :roll:
Детальнее про это можно прочитать тут
Далее тебе нужно на Делфи выполнить всего лишь один SELECT (описанный AiKом тут: 13.11.05 20:57).
Если из Делфи не получается соединиться с БД и послать запрос - спроси в соседней ветке форума, как это делается.
Если же действительно Делфи говорит, что неправильный синтаксис запроса - покажи, пожалуйста, какое именно сообщение возвращается.
А как уж представить данные, полученные программой, это уже соовершенно другая история... (и опять же таки касается исключительно Делфи).
Viktor Zull, тебе нужно всего лишь один раз создать этот самый VIEW. Загружаешь свой редактор БД, создаёшь, коммитиш (если в MSSQL такое есть).AiK писал(а):Зачем?! Это серверный объект. Создал один раз, как таблицу, и забыл про него.
Детальнее про это можно прочитать тут
Далее тебе нужно на Делфи выполнить всего лишь один SELECT (описанный AiKом тут: 13.11.05 20:57).
Если из Делфи не получается соединиться с БД и послать запрос - спроси в соседней ветке форума, как это делается.
Если же действительно Делфи говорит, что неправильный синтаксис запроса - покажи, пожалуйста, какое именно сообщение возвращается.
А как уж представить данные, полученные программой, это уже соовершенно другая история... (и опять же таки касается исключительно Делфи).