Oracle select - wiele tabel, powtarzające się wartości w polu

0

witam,

Mam dwie przykładowe tablice:

tab1:

ID1 | Rodzaj | Data1 | Data2 | Kod_rodz
1 | Rodz1 | 1 | 1 | 1
2 | Rodz2 | 2 | 2 | 1
3 | Rodz3 | 3 | 3 | 1
1 | Rodz1 | 4 | 4 | 2
2 | Rodz2 | 5 | 5 | 2
3 | Rodz3 | 6 | 6 | 2
4 | Rodz1 | 7 | 7 | 3

tab2:

ID2 | kod_d_1| Nazwa |
1 | 1 | nazwa1|
2 | 2 | nazwa2|
3 | 3 | nazwa3|
4 | 4 | nazwa4|
5 | 5 | nazwa5|
6 | 6 | nazwa6|

Problem:

Potrzebowałbym otrzymać widok, w którym dla każdego kod_rodz z tab1 otrzymuję wartości z pola nazwa z tab2 w sposób, jak podałem poniżej:

ID1 | Kod_rodz | 1_nazwa | 2_nazwa | 3_nazwa
1 | 1 | nazwa1 | nazwa2 | nazwa3
2 | 2 | nazwa4 | nazwa5 | nazwa6
3 | 3 | nazwa7 | nazwa8 | nazwa9

Data1=kod_d_1.
W widoku potrzebowałbym również zaprezentować inne dane z pól innych tabel (tu niewymienione), identyfikowane za pomocą kod_rodz - z tym nie mam problemu ;), dodaję tylko informacyjnie - użyłem selecta from (kilka tabel) where (kilka warunków), w tym przypadku był dla mnie bardziej czytelny w składni niż join.

0

abrakadaber dzięki za szybką odpowiedź, ale tabele przestawne w tym przypadku chyba nie będą właściwym rozwiązaniem.
Założenie przyjęte w podanym linku to powtarzalność wartości - stąd case.
U mnie jest inaczej - zauważ, że wartości nazwaX się nie powtarzają. Dodatkowo są to setki rekordów co rodzi problem przypisania do case.
Chyba, że czegoś nie rozumiem ;)

0

jak masz oracle 11 to tam jest pivot

SELECT ...
FROM   ...
PIVOT
   ( pivot_clause
     pivot_for_clause
     pivot_in_clause )
WHERE  ...

jak masz mniejszy niż 11 to albo case na sztywno albo obrabianie tego po stronie aplikacji

0

mam 10g, kombinuję z case, coś mi nie idzie. Z tab1 wyciągam do widoku dane selectem z warunkiem Rodzaj=Rodz1. Odpowiednio w wierszu odpowiada mu Kod_rodz (trochę mylącą nazwę pola dałem, niezwiązana). I dla wszystkich tych samych wartości Kod_rodz (jest ich trzy, w trzech kolejnych wierszach) chciałbym w tym samym widoku ("w locie") otrzymać 3 wartości nazwaX, odczytane z tab2. Relację tab1 <--> tab2 mam tylko po tab1 i tu mam problem. Data1=tab2.kod_d_1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1