zapytanie składa się z kilku zapytań połączonych przez union.
select x1,count(y1) from t1 where w1 group by x1
union
select x2,count(y2) from t2 where w2 group by x2
union
...
t1..tn to wyliczane tabele. jednek t1..tn są bardzo podobne do siebie i
ich postać umożliwia stworzenie ogólnej tabeli t, która sprowadziłaby
zapytania składowe do postaci różniącej się tylko grupowaniem.
moje pytanie jest następujące: czy da się jakoś raz obliczyć tę ogólną
tabelę t i zastosować ją do tych zapytań składowych? jest jeden haczyk:
użytkownik nie może tworzyć tabel 8-|. dałoby się to jakoś obejść?
będę wdzięczny za sugestie.
Reetah
Nie bardzo rozumiem, co chcesz zrobic.
Jezeli tablele t1..tn so identyczne to czemu nie uzyc jednej tabeli?
Z drugiej czesci Twojego pytania zgaduje, ze myslisz o Oracle
Temporary table w
tych samych kryteriach co MS SQL server.
W Oracle nie musisz kreowac Temp table dla kazdego uzytkownika.
Napisz wiecej o tym co chcesz osiagac, na pewno znajdzie sie proste
rozwiazanie.
HTH
Thomas
witam, nie są identyczne, tylko podobne :) gdyby były identyczne to nie
byłoby problemu. podobieństwo t1..tn wyraża się tym, że można stworzyć
jedno ogólne zapytanie t i otrzymać tabelę, która zawiera wszystkie
potrzebne informacje. ponieważ t1..tn i tak są obliczane, więc wolałbym
obliczyć tylko raz t i dalej korzystać z niej w zapytaniach, niż do
każdego zapytania obliczać tn.
przy zastosowaniu t wcześniej wspomniane zapytania składowe miałyby
postać bez klauzuli WHERE i różniłyby się grupowaniem.
chodzi właśnie o utworzenie tymczasowej tabeli t, do której odwoływałyby
się zapytania składowe. no i użytkownik nie ma praw tworzenia tabel :)
czy dałoby się to jakoś obejść?
pozdrawiam!
Reetah
Zobacz:
CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE...
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#sthref7382
W Oracle mozesz zkreowac TEMPORARY TABLE raz i uzywac wiele razy.
Czyli "wlascicielem" nowego TEMPORARY TABLE bedzie ten sam
"wlasciciel" (schema) co
tables t1..tn.
Kazda "connection" bedzie "widziala" inny set danych.
Dane istnieja w nowej tabeli dopuki nie zrobisz DELETE lub ROLLBACK.
HTH
Thomas