|
|
|
SQL Query
|
|||
|---|---|---|---|
|
#18+
я замечаю что в 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.04.2006, 20:55 |
|
||
|
SQL Query
|
|||
|---|---|---|---|
|
#18+
SvetaShя замечаю что в Microsoft SQL Server topic никто не хочет ( или не может) онvечать поэтому, наверное опять не по теме... просто Вы вопросы плохо формулируете ... читали ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 21:25 |
|
||
|
SQL Query
|
|||
|---|---|---|---|
|
#18+
Слухай, на вскидку: 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.04.2006, 22:15 |
|
||
|
SQL Query
|
|||
|---|---|---|---|
|
#18+
Такие селекты пишут только начинающие программисты :) 1) Его трудно читать 2) Его трудно понять 3) Его трудно в будущем править 4) Из-за большого количества group by и outer join он ужасно неоптимизирован и 5) нетривиально исполняется (т.е. в разные моменты времени может выдавать разные resultset-ы - сами на это наступали - причина в оптимизаторе кода MSSQL) Однозначно: переделать на процедуру со временной таблицей (у нас более 4000 процедур на MS/ORACLE/InteBase и за подобные художества можно (и нужно) лишиться премии) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 08:50 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33698571&tid=1337806]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 414ms |

| 0 / 0 |
