Witam,
Mam nastepujace tabele:
  1. CREATE TABLE pr_st_apps (
  2. ap_oid number(10) NOT NULL,
  3. ap_name varchar2(100) NOT NULL,
  4. constraint st_ap_pk PRIMARY KEY(ap_oid));
  5.  
  6. CREATE TABLE pr_st_jobs (
  7. jb_oid number(10) NOT NULL,
  8. jb_submitter varchar2(100) NOT NULL,
  9. jb_status number(2) NOT NULL,
  10. jb_created_on date NOT NULL,
  11. jb_submitted_on date NULL,
  12. jb_finished_on date NULL,
  13. jb_notification_on char(1) NOT NULL,
  14. constraint st_jb_pk PRIMARY KEY(jb_oid));
  15.  
  16. CREATE TABLE pr_st_tasks (
  17. ts_oid number(10) NOT NULL,
  18. ts_type varchar2(20) NOT NULL,
  19. ts_app_oid number(10) NOT NULL,
  20. ts_parent_oid number(10) NULL,
  21. ts_job_oid number(10) NULL,
  22. ts_status number(2) NOT NULL,
  23. ts_process_count number(3) NULL,
  24. constraint st_ts_pk PRIMARY KEY(ts_oid),
  25. constraint st_ts_fk1 FOREIGN KEY(ts_parent_oid) REFERENCES pr_st_tasks(ts_oid),
  26. constraint st_ts_fk2 FOREIGN KEY(ts_job_oid) REFERENCES pr_st_jobs(jb_oid),
  27. constraint st_ts_fk3 FOREIGN KEY(ts_app_oid) REFERENCES pr_st_apps(ap_oid));

Mam tez taka tabele:
  1. CREATE TABLE pr_st_users_daily_stats(
  2. ud_date varchar2(10) NOT NULL,
  3. ud_user_dn varchar2(100) NOT NULL,
  4. ud_jobs_count number(6) NOT NULL,
  5. ud_tasks_count number(6) NOT NULL,
  6. ud_executed_tasks_count number(6) NOT NULL,
  7. ud_computing_time clob NULL,
  8. ud_portal_time long NULL,
  9. constraint st_ud_pk PRIMARY KEY(ud_user_dn, ud_date),
  10. 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 sad.gif



Tyle czasu minelo i nikt nie odpowiedzial sad.gif. Czy to znaczy, ze tego sie nie da zrobic?? Prosze chociaz o taka odpowiedz... Obawiam sie jednak, ze to chodzi o dlugosc posta sad.gif.

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...