|
|
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
Я budu ochen' blagodarna, если кто - то мог бы помочь мне с этим: Я долженa или сделать этy Query без UNION, или вставить больше аргументов, чтобы query by Update_by_sym и work_order_data.originator_oid вместе. SELECT Inv_Move_Log.inv_move_date, Inv_Move_Log.from_inv_type_sym, Inv_Move_Log.to_inv_type_sym, Inv_Move_Log.updated_by_sym, Inv_Move_Log.oid, Inv_Move_Log.inv_oid, Inv_Move_Log.from_inv_status_oid, Inv_Move_Log.to_inv_status_oid, Inv_Move_Log.from_parent_oid, Inv_Move_Log.to_parent_oid, Inv_Move_Log.from_on_aircraft_oid, Inv_Move_Log.to_on_aircraft_oid, Inv_Move_Log.from_city_oid, Inv_Move_Log.to_city_oid, Inv_Move_Log.from_ac_position_oid, Inv_Move_Log.to_ac_position_oid, Inv_Move_Log.from_starting_date, Inv_Move_Log.to_starting_date, Inv_Move_Log.coo_oid, Inv_Move_Log.uom_code_oid, Inv_Move_Log.create_date, Inv_Move_Log.from_uom_qty, Inv_Move_Log.to_uom_qty, Inv_Move_Log.From_Purch_price, Inv_Move_Log.To_Purch_price, Inv_Move_Log.From_Core_Value, Inv_Move_Log.To_Core_Value, Inv_Move_Log.Wo_inv_action_oid , rotable_inventory.serial_number, item_master.id, item_master.description, 'from_bin_loc' = lm_1.location_id, 'to_bin_loc' = lm_2.location_id, null wo_data_line_no, null wo_id FROM Inv_Move_Log , rotable_inventory, item_master, location_master lm_1, location_master lm_2 WHERE ( Inv_Move_Log.inv_oid = :Inv_Oid ) and rotable_inventory.oid = Inv_Move_Log.inv_oid and rotable_inventory.item_oid = item_master.oid and Inv_Move_Log.from_bin_location_oid *= lm_1.oid and Inv_Move_Log.to_bin_location_oid *= lm_2.oid and ( Inv_Move_Log.Wo_inv_action_oid not in (select oid from wo_inv_action where oid = Inv_Move_Log.Wo_inv_action_oid and wo_data_oid in (select oid from work_order_data where oid = wo_inv_action.wo_data_oid))) union SELECT Inv_Move_Log.inv_move_date, Inv_Move_Log.from_inv_type_sym, Inv_Move_Log.to_inv_type_sym, Inv_Move_Log.updated_by_sym, Inv_Move_Log.oid, Inv_Move_Log.inv_oid, Inv_Move_Log.from_inv_status_oid, Inv_Move_Log.to_inv_status_oid, Inv_Move_Log.from_parent_oid, Inv_Move_Log.to_parent_oid, Inv_Move_Log.from_on_aircraft_oid, Inv_Move_Log.to_on_aircraft_oid, Inv_Move_Log.from_city_oid, Inv_Move_Log.to_city_oid, Inv_Move_Log.from_ac_position_oid, Inv_Move_Log.to_ac_position_oid, Inv_Move_Log.from_starting_date, Inv_Move_Log.to_starting_date, Inv_Move_Log.coo_oid, Inv_Move_Log.uom_code_oid, Inv_Move_Log.create_date, Inv_Move_Log.from_uom_qty, Inv_Move_Log.to_uom_qty, Inv_Move_Log.From_Purch_price, Inv_Move_Log.To_Purch_price, Inv_Move_Log.From_Core_Value, Inv_Move_Log.To_Core_Value, Inv_Move_Log.Wo_inv_action_oid, rotable_inventory.serial_number, item_master.id, item_master.description, 'from_bin_loc' = lm_1.location_id, 'to_bin_loc' = lm_2.location_id, Work_Order_data.Line_No wo_data_line_no, Work_Order_Header.Id wo_id FROM Inv_Move_Log, Work_Order_data, Work_Order_Header, WO_Inv_Action , rotable_inventory, item_master, location_master lm_1, location_master lm_2 WHERE ( Work_Order_data.WO_Header_Oid = Work_Order_Header.Oid ) and ( Work_Order_data.Oid = WO_Inv_Action.WO_Data_Oid ) and rotable_inventory.oid = Inv_Move_Log.inv_oid and rotable_inventory.item_oid = item_master.oid and Inv_Move_Log.from_bin_location_oid *= lm_1.oid and Inv_Move_Log.to_bin_location_oid *= lm_2.oid and ( WO_Inv_Action.Oid = Inv_Move_Log.Wo_inv_action_oid ) and ( Inv_Move_Log.inv_oid = :Inv_Oid ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 18:05 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
SvetaShЯ budu ochen' blagodarna, если кто - то мог бы помочь мне с этим: Я долженa или сделать этy Query без UNION, или вставить больше аргументов, чтобы query by Update_by_sym и work_order_data.originator_oid вместе. Может я один такой непонятливый, но кажется Вы как-то не очень четко сообщили нам в чем задача и где проблема. Я бы начал вот с этого: 1) Приведите пример, что возвращает указанный запрос. 2) Приведите, что должен возвращать требуемый запрос. 3) Какие Вы видете пути решения? Чем они не подходят? Конкретно по тексту письма есть вопросы: Почему возникло требование "сделать этy Query без UNION"? Ведь это средство, а не цель. Так же префразируйте пожалуйста фразу вставить больше аргументов, чтобы query by Update_by_sym и work_order_data.originator_oid вместе Если с русским языком не очень, приведите наряду с русским текстом и оригинал фразы на английском (хотя это offtopic здесь :-( ). PS. Вот честно, я еще с предыдущих Ваших сообщений хотел помочь, но трудно что-либо посоветовать если проблема описана невнятно, а времени на допросы с пристрастием думаю здесь ни у кого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 00:11 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
я знаю SQL для Оракла, но думяю что если джойн который ты написала: Inv_Move_Log.from_bin_location_oid *= lm_1.oid подразумевает: Inv_Move_Log.from_bin_location_oid(+)= lm_1.oid тогда SQL можно напмсать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 00:22 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
проблема вот в чем: Етот запрос дает мне ресултат by Item_oid, а мне нужно query by Updated_by_sym ( string) and originator_oid ( intenger). я поставлю их как аргументы к Datawindow, потом create Query Window to Query by these fields и pass them kak argumentы k Datawindow. Может я не понятно объяснила, избиняюсь. Проблема в том что оба аргумента это Employee, один Employee_oid ( originator _oid ) , второй Employee_name ( Updated_by_Sym) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 00:54 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
Света, 1) Какая у тебя база данных? С точностью до номера билда пожалуйста 2) Приведи пример данных в исходных таблицах. 3) Покажи пример как должен выглядеть результат. 4) Сократи и исходные данные и результат до ключевых полей и максимум двух полей вывода. А еще будет хорошо чтобы следующий SQL вопрос был бы в форуме по соотвествующему серверу базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 02:04 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
Database: Microsoft® SQL Server™ 2000 Приведите пример, что возвращает указанный запрос. ( excluded some columns to fit the screen) inv_move_date updated_by_sym inv_oid Wo_inv_action_oid wo_data_line_no wo_id 10/1/2000 0:00 user 645 10/1/2000 0:00 Paul Crumley 645 11/12/2000 0:00 wo_inv_act 645 10 15 18 11/13/2000 0:00 wo_inv_act 645 18 4 20 1/15/2003 0:00 wo_inv_act 645 11142 1 3486 1/18/2003 12:00 wo_inv_act 645 11294 3 2663 8/30/2003 14:00 wo_inv_act 645 19379 1 4798 9/1/2003 14:00 move_desc 645 9/2/2003 20:09 move_desc 645 11/2/2004 move_desc 645 11/3/2004 0:00 Susan Zager-Martin 645 11/1/2005 7:00 wo_inv_act 645 120787 1 JT9-M016 12/8/2005 Charlotte Franklin 645 12/9/2005 Repair 645 в случае когда Updated_by_sym = "wo_inv_action" или Updated_by_sym = "Repair" нужно линк к таблице wo_inv_action и work_order_data, и вывести work_order_data.originator_oid ( by adding another column, in the case when Updated_by_sym = name that table will be empty.) но, work_order_data.originator_oid is an integer that links to Employee_Data to get name and Updated_by_sym is a name( string). Then, I need to query by Updated_by_sym and matching work_order_data.originator_oid to get all moves for that Employee. я очень извиняюць что пишу половину по русски половину по английски, надеюсь понятно. пример как должен выглядеть результат ( пример): inv_move_date updated_by_sym inv_oid Wo_inv_action_oid wo_data_line_no wo_id wo_data.originator_oid Employee_Data.name 10/1/2000 0:00 Paul Crumley 645 10/1/2000 0:00 Paul Crumley 645 11/12/2000 0:00 Paul Crumley 645 10 15 18 11/13/2000 0:00 Paul Crumley 645 18 4 20 1/15/2003 0:00 wo_inv_act 645 11142 1 3486 123 Paul Crumley 1/18/2003 12:00 wo_inv_act 645 11294 3 2663 123 Paul Crumley 8/30/2003 14:00 wo_inv_act 645 19379 1 4798 123 Paul Crumley 11/3/2004 0:00 Paul Crumley 645 11/1/2005 7:00 wo_inv_act 645 120787 1 JT9-M016 123 Paul Crumley 12/8/2005 Paul Crumley 645 12/9/2005 Paul Crumley 645 I just put together the sample results ( nothing to do with the real data). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 17:03 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
to ZUZU, tried doesn't work. thanks for the efford ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 17:14 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
Используйте тег CSV в форуме для таблиц, по крайней мере читаемо: inv_move_date updated_by_sym inv_oid Wo_inv_action_oid wo_data_line_no wo_id wo_data.originator_oid Employee_Data.name11/13/2000 0:00 Paul Crumley 645 18 4 20 NULL NULL1/15/2003 0:00 wo_inv_act 645 11142 1 3486 123 Paul Crumley1/18/2003 12:00 wo_inv_act 645 11294 3 2663 123 Paul Crumley Чтобы присоединить последние 2 столбца Вам нужно выполнить outer join (как уже Вам посоветовали) WO_Inv_Action.Oid *= Inv_Move_Log.Wo_inv_action_oid and Work_Order_data.Oid *= WO_Inv_Action.WO_Data_Oid and Work_Order_Header.Oid *= Work_Order_data.WO_Header_Oid Но не только этих таблиц. Надо еще outer join всей цепочки присоединяемых таблиц вплоть до справочника сотрудников. Т.е. WO_Inv_Action.Oid *= Inv_Move_Log.Wo_inv_action_oid and Work_Order_data.Oid *= WO_Inv_Action.WO_Data_Oid and Work_Order_Header.Oid *= Work_Order_data.WO_Header_Oid and Employee_Data.oid *= Work_Order_data.originator_oid Плюс фильтр по сотруднику and (Work_Order_data.originator_oid = :ai_empid OR Inv_Move_Log.updated_by_sym = :as_empname) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 17:46 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
я уже пыталаць это делать, но в первой половине Union, those fields are NULL and I get the error. я попробую ещё раз, потом опубликую то что у меня получилось. Спасибо Огромное за помощ, Света ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 17:54 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
What am I doing wrong here, get an infinite query: SELECT Inv_Move_Log.inv_move_date, Inv_Move_Log.from_inv_type_sym, Inv_Move_Log.to_inv_type_sym, Inv_Move_Log.updated_by_sym, Inv_Move_Log.oid, Inv_Move_Log.inv_oid, Inv_Move_Log.from_inv_status_oid, Inv_Move_Log.to_inv_status_oid, Inv_Move_Log.from_parent_oid, Inv_Move_Log.to_parent_oid, Inv_Move_Log.from_on_aircraft_oid, Inv_Move_Log.to_on_aircraft_oid, Inv_Move_Log.from_city_oid, Inv_Move_Log.to_city_oid, Inv_Move_Log.from_ac_position_oid, Inv_Move_Log.to_ac_position_oid, Inv_Move_Log.from_starting_date, Inv_Move_Log.to_starting_date, Inv_Move_Log.coo_oid, Inv_Move_Log.uom_code_oid, Inv_Move_Log.create_date, Inv_Move_Log.from_uom_qty, Inv_Move_Log.to_uom_qty, Inv_Move_Log.From_Purch_price, Inv_Move_Log.To_Purch_price, Inv_Move_Log.From_Core_Value, Inv_Move_Log.To_Core_Value, Inv_Move_Log.Wo_inv_action_oid , item_master.id, item_master.description, 'from_bin_loc' = lm_1.location_id, 'to_bin_loc' = lm_2.location_id, null wo_data_line_no, null wo_id, null wo_data_originator_oid FROM Inv_Move_Log , item_master, location_master lm_1, location_master lm_2, wo_inv_action, employee_Data, work_order_data, work_order_header WHERE Inv_Move_Log.from_bin_location_oid *= lm_1.oid and Inv_Move_Log.to_bin_location_oid *= lm_2.oid and ( Inv_Move_Log.Wo_inv_action_oid not in (select oid from wo_inv_action where oid = Inv_Move_Log.Wo_inv_action_oid and wo_data_oid in (select oid from work_order_data where oid = wo_inv_action.wo_data_oid))) and wo_inv_action.oid =* Inv_move_log.wo_inv_action_oid and work_order_header.oid = Work_order_data.WO_Header_oid and Employee_data.oid = Work_order_data.originator_oid and (work_order_data.originator_oid = 687 OR Inv_move_log.updated_by_sym = 'Mathews') union SELECT Inv_Move_Log.inv_move_date, Inv_Move_Log.from_inv_type_sym, Inv_Move_Log.to_inv_type_sym, Inv_Move_Log.updated_by_sym, Inv_Move_Log.oid, Inv_Move_Log.inv_oid, Inv_Move_Log.from_inv_status_oid, Inv_Move_Log.to_inv_status_oid, Inv_Move_Log.from_parent_oid, Inv_Move_Log.to_parent_oid, Inv_Move_Log.from_on_aircraft_oid, Inv_Move_Log.to_on_aircraft_oid, Inv_Move_Log.from_city_oid, Inv_Move_Log.to_city_oid, Inv_Move_Log.from_ac_position_oid, Inv_Move_Log.to_ac_position_oid, Inv_Move_Log.from_starting_date, Inv_Move_Log.to_starting_date, Inv_Move_Log.coo_oid, Inv_Move_Log.uom_code_oid, Inv_Move_Log.create_date, Inv_Move_Log.from_uom_qty, Inv_Move_Log.to_uom_qty, Inv_Move_Log.From_Purch_price, Inv_Move_Log.To_Purch_price, Inv_Move_Log.From_Core_Value, Inv_Move_Log.To_Core_Value, Inv_Move_Log.Wo_inv_action_oid, item_master.id, item_master.description, 'from_bin_loc' = lm_1.location_id, 'to_bin_loc' = lm_2.location_id, Work_Order_data.Line_No wo_data_line_no, Work_Order_Header.Id wo_id, work_order_data.originator_oid FROM Inv_Move_Log, Work_Order_data, Work_Order_Header, WO_Inv_Action , employee_Data, item_master, location_master lm_1, location_master lm_2 WHERE Inv_Move_Log.from_bin_location_oid *= lm_1.oid and Inv_Move_Log.to_bin_location_oid *= lm_2.oid and ( WO_Inv_Action.Oid =* Inv_Move_Log.Wo_inv_action_oid ) and wo_inv_action.oid =* Inv_move_log.wo_inv_action_oid and work_order_header.oid = Work_order_data.WO_Header_oid and Employee_data.oid = Work_order_data.originator_oid and (work_order_data.originator_oid = 687 OR Inv_move_log.updated_by_sym = 'Mathews') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 18:17 |
|
||
|
SQL Вопрос
|
|||
|---|---|---|---|
|
#18+
IMHO, и в первом и втором запросе union не хватает join'ов для всех указанных таблиц в FROM. В частности во втором из них указана таблица item_master, но ни с чем не связана. В этом случае происходит перемножение количества записей всех несвязанных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 18:50 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33665901&tid=1337828]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 419ms |

| 0 / 0 |
