Spalten aus Resultaten genereiren

tharo

Mitglied
Hallo liebe Freunde des Denksports.

Ich arbeite zZ an deinem System mit sich ständig verändernden Hirachie-Ebenen, was mich vor folgendes Problem stellt:

Gegeben sei:
Code:
Site
----------------
ID  | Name  |
----------------
1   | Test Site |

Code:
Rollen
----------------
ID  | Name     |
----------------
1   | Admin    |
2   | Gast     |
3   | Member   |
4   | Schlumpf |

Code:
Zuordnung
----------------
sID | rID  | uID
----------------
1   | 1    | 3
1   | 2    | 4
1   | 4    | 16

Der Kern-Punkt ist eigentlich die Zuordnung: User x hat auf Seite y das Rolle z.
Am Ende wird folgende Ausgabe gewünscht:

Code:
 Site      | Admin | Gast | Member | Schlumpf 
---------------------------------------------------
Test Site  | 3     | 4    | NULL   | 16


Die Frage ist nun: Wie bekomme ich das hin? :| Ich bin für alle Lösungsvorschläge offen.
Nur vorweg: Nein, die Anzahl der Rollen ist in der Tat flexibel. Natürlich ändert sie sich nicht zu oft. Es wäre also denkbar eine Virtuelle Tabelle oder einen View zu generieren.

Es mangelt mir vor allem am konkreten Syntax.
 
Hi tharo,

in Oracle gäbe es noch eine Pivot Möglichkeit allerdings ist die nicht so 100% dynamisch leider (außer Du magst das Ergebnis im XML Format) aber vielleicht hilft Sie die in deinem Fall. http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html

Aus dem Artikel:

select * from (
select times_purchased, state_code
from customers t
)
pivot
(
count(state_code)
for state_code in ('NY','CT','NJ','FL','MO')
)
order by times_purchased
/

Here is the output:

. TIMES_PURCHASED 'NY' 'CT' 'NJ' 'FL' 'MO'
--------------- ---------- ---------- ---------- ---------- ----------
0 16601 90 0 0 0
1 33048 165 0 0 0
2 33151 179 0 0 0
3 32978 173 0 0 0
4 33109 173 0 1 0
... and so on ...
 
Zurück