Mam nastepujace tabele:
CREATE TABLE pr_st_apps ( ap_oid number(10) NOT NULL, ap_name varchar2(100) NOT NULL, constraint st_ap_pk PRIMARY KEY(ap_oid)); CREATE TABLE pr_st_jobs ( jb_oid number(10) NOT NULL, jb_submitter varchar2(100) NOT NULL, jb_status number(2) NOT NULL, jb_created_on date NOT NULL, jb_submitted_on date NULL, jb_finished_on date NULL, jb_notification_on char(1) NOT NULL, constraint st_jb_pk PRIMARY KEY(jb_oid)); CREATE TABLE pr_st_tasks ( ts_oid number(10) NOT NULL, ts_type varchar2(20) NOT NULL, ts_app_oid number(10) NOT NULL, ts_parent_oid number(10) NULL, ts_job_oid number(10) NULL, ts_status number(2) NOT NULL, ts_process_count number(3) NULL, constraint st_ts_pk PRIMARY KEY(ts_oid), constraint st_ts_fk1 FOREIGN KEY(ts_parent_oid) REFERENCES pr_st_tasks(ts_oid), constraint st_ts_fk2 FOREIGN KEY(ts_job_oid) REFERENCES pr_st_jobs(jb_oid), constraint st_ts_fk3 FOREIGN KEY(ts_app_oid) REFERENCES pr_st_apps(ap_oid));
Mam tez taka tabele:
CREATE TABLE pr_st_users_daily_stats( ud_date varchar2(10) NOT NULL, ud_user_dn varchar2(100) NOT NULL, ud_jobs_count number(6) NOT NULL, ud_tasks_count number(6) NOT NULL, ud_executed_tasks_count number(6) NOT NULL, ud_computing_time clob NULL, ud_portal_time long NULL, constraint st_ud_pk PRIMARY KEY(ud_user_dn, ud_date), constraint st_ud_chk1 CHECK((ud_executed_tasks_count > 0 AND ud_computing_time IS NOT NULL) OR (ud_executed_tasks_count = 0 AND ud_computing_time IS NULL)));
I problem teraz polega na tym, ze musze napisac zapytanie, ktore bedzie mi ta ostatnia tabele uzupelnialo na podstawie danych z poprzednich trzech. Nie mam z tym problemu poza jedna rzecza. W ostatniej tabeli mam dwa pola, ktore mi sie wykluczaja w jednym zapytaniu: ud_tasks_count i ud_executed_tasks_count. Pierwsze z nich zlicza wszystkie zadania danego uzytkownika, a drugie zadania, ktore maja status 'executed'. Pobieram ten status z tabeli pr_st_tasks z pola ts_status (ono przechowuje liczbe, ale to nie ma znaczenia akurat odnosnie tego problemu). Sek w tym, ze nie wiem jak napisac jednego selecta, ktory by mi poprawnie wypelnil te dwa pola (kolumny). Jesli przeciez w warunku ogolnym 'where' podam 'where ts_status = 1' no to warunek bedzie dla calego zapytania - czyli w ud_tasks_count bede rowniez mial wartosc taka jak w ud_executed_tasks_count.
Pytanie teraz do Was: Czy da sie tak napisac warunki zeby to zapytanie napisac w postaci jednego selecta (oczywiscie z podzapytaniami itd.), a nie rozbijac tego na korzystanie ze zmiennej, ktora by juz wczesniej miala przekazany fragment zapytania? Jesli tak to bede ogromnie wdzieczny za pomoc. Jesli trzeba to rozwiazac inaczej rowniez prosze o wskazowki bo nie moge sobie z tym dac rady

Tyle czasu minelo i nikt nie odpowiedzial


Moze jak powiem, ze to pod Oracla musi byc to cos ulatwi/pomoze? Chociaz kazda wersja bedzie mile widziana - na Oraclowego SQLa juz sobie sam to przerobie pozniej...