Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 SQL Query  [new]
SvetaSh
Member

Откуда:
Сообщений: 147
я замечаю что в Microsoft SQL Server topic никто не хочет ( или не может) онvечать поэтому, наверное опять не по теме...

Кто то может помочь с query.
Вот что требуется:
Наити мин unaudit_date , потом мах audit_date ( где actual_time_in < мин unaudit_date ).

Вот что есть, но в некоторых случаях мин unaudit_date is NULL, поэтому я не получаю нужных результатов.
Спасибо за помощь

SELECT aircraft_data.oid aircraft_oid,
Aircraft_data.Aircraft_id ,
Aircraft_data.Fleet_Oid ,
Aircraft_data.Fleet_Type_Oid ,
Aircraft_data.Total_Time,
Aircraft_data.Total_Landings ,
Aircraft_fleet.Description ,
Aircraft_fleet_Type.type_id ,
Aircraft_data.flight_data_oid,
flight_data.destination_oid ,
flight_data.actual_time_on ,
flight_data.log_page,
aircraft_data.starting_time,
aircraft_data.starting_landings,
"audit_date" = (select max(actual_time_in)
from flight_data
where aircraft_oid = aircraft_data.oid and
status_sym = 'Completed' and
actual_time_in < (select min(actual_time_in)
from flight_data
where aircraft_oid = aircraft_data.oid and
audited_sym = 'false' and
status_sym = 'Completed')),
min(actual_time_in),
sum(flight_time),
sum(landings),
max(actual_time_in)
FROM Aircraft_data (NOLOCK) ,
Aircraft_fleet (NOLOCK),
Aircraft_fleet_Type(NOLOCK),
flight_data (NOLOCK)
WHERE ( Aircraft_fleet.Oid = Aircraft_data.Fleet_Oid) and
( Aircraft_fleet_Type.Oid =* Aircraft_data.Fleet_Type_Oid) and
( Aircraft_data.Status_Sym = 'Active' ) and
( Aircraft_fleet.description in('727', '747') and
(aircraft_data.aircraft_id <> 'SUBCONTRACT')) and
aircraft_data.flight_data_oid *= flight_data.oid

Group by
aircraft_data.oid,
Aircraft_data.Aircraft_id ,
Aircraft_data.Fleet_Oid ,
Aircraft_data.Fleet_Type_Oid ,
Aircraft_data.Total_Time,
Aircraft_data.Total_Landings ,
aircraft_data.starting_time,
aircraft_data.starting_landings,
Aircraft_data.flight_data_oid,
Aircraft_fleet.Description ,
Aircraft_fleet_Type.type_id ,

flight_data.oid,
flight_data.destination_oid ,
flight_data.actual_time_on ,
flight_data.log_page,
flight_data.flight_time,
flight_data.landings,
flight_data.actual_time_in
27 апр 06, 20:55    [2611734]     Ответить | Цитировать Сообщить модератору
 Re: SQL Query  [new]
alexis glinski
Member

Откуда: Minsk
Сообщений: 408
SvetaSh
я замечаю что в Microsoft SQL Server topic никто не хочет ( или не может) онvечать поэтому, наверное опять не по теме...

просто Вы вопросы плохо формулируете ... читали ???
27 апр 06, 21:25    [2611765]     Ответить | Цитировать Сообщить модератору
 Re: SQL Query  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
Слухай, на вскидку:
1. очень много group by
2. nested with sub nested selects тоже минус на перформанс.

Не вдаваясь в подробности, конечно селекты работают быстрее апдейтов, но в данном случае почему ты не используеш временные таблицы?

загрузи значала только все id папелацев которые тебе нужны + null, null ...etc. колонок на которые ты делаеш aggregate functions & sub selects.
потом сделай на каждую из них по апдэйту, нулли останутса нуллями где надо.

делай упоры на кий и индекс колонки.

ну а потом последним селектом тяни всякую ерунду типа Description и т.д.

думаю будет быстрее и проще.

Будеш буксовать, дай структуры таблиц (с праймари кийс и индексами):
Aircraft_data,
Aircraft_fleet,
Aircraft_fleet_Type,
flight_data

и объясни, чё хотят в репорте.
будет время гляну.
27 апр 06, 22:15    [2611844]     Ответить | Цитировать Сообщить модератору
 Re: SQL Query  [new]
MkSim
Member

Откуда:
Сообщений: 42
Такие селекты пишут только начинающие программисты :)
1) Его трудно читать
2) Его трудно понять
3) Его трудно в будущем править
4) Из-за большого количества group by и outer join он ужасно неоптимизирован и
5) нетривиально исполняется (т.е. в разные моменты времени может выдавать разные resultset-ы - сами на это наступали - причина в оптимизаторе кода MSSQL)
Однозначно:
переделать на процедуру со временной таблицей

(у нас более 4000 процедур на MS/ORACLE/InteBase и за подобные художества можно (и нужно) лишиться премии) :)
28 апр 06, 08:50    [2612383]     Ответить | Цитировать Сообщить модератору
 Re: SQL Query  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
Да ладно Максим, она и есть начинающий, разберётса со временем, что будеш делать, то будеш уметь.

Кстати, я перестал материтса за рулём на других водил, недавно, после того как начал учитса летать, а за рулём я с 1985.
28 апр 06, 17:41    [2615343]     Ответить | Цитировать Сообщить модератору
 Re: SQL Query  [new]
SvetaSh
Member

Откуда:
Сообщений: 147
Спасибо за поддержку
28 апр 06, 20:11    [2615755]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить