[Oracle] Zapytanie typu tree
remg - 23-06-2006 00:09
[Oracle] Zapytanie typu tree
Witam, chcialbym zrobic w Oracle zapytanie, ktore pokaze mi jednoczesnie dane z 2 tabel (master-detail) tak zeby mozna je bylo zaladowac do drzewka czyli wiersz z tabeli master jako galaz glowna i w niej wiersze z tabeli detail. Strukture ma odzwierciedlac 2 pola: ID oraz PARENTID. Tabele polaczone oczywiscie kluczem FK. Chodzi mi o to zeby pokazac w wyniku cos takiego (mam nadzieje ze sie zbytnio nie rozjedzie):
| ID | PARENTID | NAZWA | ------------------------------------- + | 1 | 1 | nazwa1(parent) | | 2 | 1 | nazwa2(detail) | | 3 | 1 | nazwa3(detail) | + | 4 | 4 | nazwa4(parent) | | 5 | 4 | nazwa5(detail) | + | 6 | 6 | nazwa6(parent) |
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 23-06-2006 00:09
remg wrote: > Problem polega na tym ze w pierwszej kolumnie trzeba zwrocic wartosc > unikalną dla calego zapytania, czyli nie moge tam wstawic klucza glownego > z tabeli master, tylko cos co bedzie unikalne. Z tego powodu kolumna > PARENTID nie moze byc kluczem FK z tabeli detail. Nie jestem pewien czy rozumiem, ale nie możesz zrobić wszystkiego tak jakbyś chciał, tylko na samym końcu w pierwszej kolumnie zamiast ID pokazywać ROWNUM? Każdy będzie miał wówczas unikalny numer, a Ty wykorzystasz ID/PARENTID do czego tylko chcesz i nie zawracasz sobie głowy numerkiem, który na koniec zostanie wyświetlony.
-- Michał Kuratczyk
remg - 23-06-2006 00:10
Użytkownik "Michał Kuratczyk" <kura@lj.pl> napisał w wiadomości news:e7dn12$gph$1@abg.com.pl... > remg wrote: > > Problem polega na tym ze w pierwszej kolumnie trzeba zwrocic wartosc > > unikalną dla calego zapytania, czyli nie moge tam wstawic klucza glownego > > z tabeli master, tylko cos co bedzie unikalne. Z tego powodu kolumna > > PARENTID nie moze byc kluczem FK z tabeli detail. > Nie jestem pewien czy rozumiem, ale nie możesz zrobić wszystkiego tak jakbyś > chciał, tylko na samym końcu w pierwszej kolumnie zamiast ID pokazywać > ROWNUM? Każdy będzie miał wówczas unikalny numer, a Ty wykorzystasz > ID/PARENTID do czego tylko chcesz i nie zawracasz sobie głowy numerkiem, > który na koniec zostanie wyświetlony.
Niestety, chodzi o to ze w PARENTID muszą byc wartosci z ID, dzieki temu bede mogl potem wiedziec ktore wiersze naleza do ktorej galezi. Taki jest wymog komponentu do ktorego potem chce zaladowac zestaw danych. Jesli wiec w ID zrobie ROWNUM, wtedy w PARENTID tez musze wpisywac odpowiednie wartosci ROWNUM, tylko jak?
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 23-06-2006 00:10
remg wrote: > Witam, chcialbym zrobic w Oracle zapytanie, ktore pokaze mi jednoczesnie > dane z 2 tabel (master-detail) tak zeby mozna je bylo zaladowac do drzewka > czyli wiersz z tabeli master jako galaz glowna i w niej wiersze z tabeli > detail. Strukture ma odzwierciedlac 2 pola: ID oraz PARENTID. > Tabele polaczone oczywiscie kluczem FK. > Chodzi mi o to zeby pokazac w wyniku cos takiego (mam nadzieje ze sie > zbytnio nie rozjedzie): > > > | ID | PARENTID | NAZWA | > ------------------------------------- > + | 1 | 1 | nazwa1(parent) | > | 2 | 1 | nazwa2(detail) | > | 3 | 1 | nazwa3(detail) | > + | 4 | 4 | nazwa4(parent) | > | 5 | 4 | nazwa5(detail) | > + | 6 | 6 | nazwa6(parent) | > . > . > > Problem polega na tym ze w pierwszej kolumnie trzeba zwrocic wartosc > unikalną dla calego zapytania, czyli nie moge tam wstawic klucza glownego z > tabeli master, tylko cos co bedzie unikalne. Z tego powodu kolumna PARENTID > nie moze byc kluczem FK z tabeli detail.
Jeśli nie możesz wrzucić całego drzewa do jednej tabeli (co jest najlepszym rozwiązaniem), to używaj jednej sekwencji dla obydwu tabel. Zapewnisz sobie wtedy unikalność ID przy UNION ALL.
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle 19g +Insert +Insert +Insert...
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
=?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plmorebeer.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|