Auflistung Datensätze mit Verbindung von 2-3 Tabellen

wildschwein

Neuer Benutzer
Beiträge
3
Guten Abend zusammen,

ich beginne gerade mit SQL und habe bereits einige (auch wenn nur kleine) Erfolge gefeiert :)

Ich habe eine Liste von Tickets. Es gibt den Status offen und erledigt. Jedes Ticket ist einer Person zugeordnet. Jede Person ist einer oder mehreren Kostenstellen zugeordnet.

Jetzt möchte ich eine 1-n Auflistung der offenen Tickets in Verbindung der Kostenstellen darstellen.

Beispiel: Eine Person Hr. Müller ist vier Kostenstellen zugeordnet. Es gibt ein offenes Ticket mit der Nummer 4711. Die Liste der offenen Tickets würde dann vier Einträge beinhalten.

1. Eintrag: Ticket-Nr.4711, Müller, Kostenstelle1
2. Eintrag: Ticket-Nr.4711, Müller, Kostenstelle2
3. Eintrag: Ticket-Nr.4711, Müller, Kostenstelle3
4. Eintrag: Ticket-Nr.4711, Müller, Kostenstelle4

In der Tabelle des Personal gibt es einen Verweis zur Kostenstelle. Die Tickets liegen in einer eigenen Tabelle. Hier mal die Übersicht.

Tab1 = Personal
Tab2 = Kostenstelle
Tab3 = Tickets

Eine bereits erstellte Abfrage zur Anzeige der offenen Tickets lautet wie folgt:

SELECT Tab1_ID
FROM Tab1
WHERE Tab3_Person IN (SELECT Tab1_ID#
FROM Tab1)
AND Tab3_Status = "offen"

Kann mir jemand bei der Erstellung der 1-n Auflistung der Tickets nach Kostenstelle helfen?

Vielen Dank im Voraus!
 
Werbung:
Tab1 = Personal
Tab2 = Kostenstellen
Tab3 = Tickets

Tab1
Spalte 5 = Personal-ID
Spalte 6 = Kostenstellenverweis

Tab2
Spalte 5 = Kostenstellen-ID
Spalte 10 = Personalverweis

Tab3
Spalte 5 = Ticket-ID
Spalte 10 = Status (offen, geschlossen)
 
Werbung:
Mal ausgehend von Deiner ersten Beschreibung:

Code:
test=# create table person(id int primary key, name text);
CREATE TABLE
test=# create table kostenstelle (id int primary key, name text);
CREATE TABLE
test=# create table person_kostenstelle (person int references person, kostenstelle int references kostenstelle);
CREATE TABLE
test=# create table tickets (id int primary key, person int references person, name text);
CREATE TABLE
test=# insert into person values (1, 'Müller');
INSERT 0 1
test=# insert into kostenstelle values (1, 'kostenstelle 1');
INSERT 0 1
test=# insert into kostenstelle values (2, 'kostenstelle 2');
INSERT 0 1
test=# insert into kostenstelle values (3, 'kostenstelle 3');
INSERT 0 1
test=# insert into kostenstelle values (4, 'kostenstelle 4');
INSERT 0 1
test=# insert into tickets values (1, 1, 'ticket 1');
INSERT 0 1
test=# insert into person_kostenstelle values (1,1);
INSERT 0 1
test=# insert into person_kostenstelle values (1,2);
INSERT 0 1
test=# insert into person_kostenstelle values (1,3);
INSERT 0 1
test=# insert into person_kostenstelle values (1,4);
INSERT 0 1
test=# select t.name, p.name, ks.name from person_kostenstelle pk left join person p on pk.person=p.id left join kostenstelle ks on pk.kostenstelle=ks.id left join tickets t on t.person=p.id;
  name  |  name  |  name   
----------+--------+----------------
 ticket 1 | Müller | kostenstelle 1
 ticket 1 | Müller | kostenstelle 2
 ticket 1 | Müller | kostenstelle 3
 ticket 1 | Müller | kostenstelle 4
(4 rows)

Hoffe, das hilft Dir weiter.
 
Zurück
Oben