Ich habe eine staff
Datenbanktabelle, die die Mitarbeiter enthält, mit user_no
y user_name
Spalten. Ich habe eine andere, department
Tabelle mit den Abteilungen, in denen Mitarbeiter Mitglied sein können, mit dept_no
y dept_name
als Spalten.
Da Mitarbeiter in mehreren Abteilungen tätig sein können, habe ich eine dritte, staff_dept
Tabelle mit einer user_no
Spalte und eine dept_no
Spalte, die die Primärschlüssel dieser beiden anderen Tabellen sind. Diese Tabelle zeigt, zu welchen Abteilungen jeder Mitarbeiter gehört, und enthält eine Zeile für jede Kreuzung zwischen Benutzer und Abteilung.
Ich möchte eine Ausgabe in Form einer Kalkulationstabelle (CSV-Datei, was auch immer; ich werde die Ergebnisse in eine brauchbare Form bringen, nachdem ich sie erhalten habe) mit einer Spalte für jede Abteilung und einer Zeile für jeden Benutzer, mit einer X
die an jeder Kreuzung auftreten, wie in staff_dept
.
Kann ich eine einzige SQL-Abfrage schreiben, die dieses Ergebnis erzielt, oder muss ich "richtig" programmieren (denn ein "richtiges" Programm ist es erst, wenn man drei oder vier Abfragen verschachtelt hat)? for
Schleifen), um diese Daten zu sammeln und zu formatieren?
3 Stimmen
Welche rdbms? oracle? sql-server? mysql? postgre? db2? access?
2 Stimmen
Testabfrage: sqlfiddle.com/#!3/c136d