1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Auflistung Datensätze mit Verbindung von 2-3 Tabellen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von wildschwein, 1 Dezember 2017.

  1. wildschwein

    wildschwein Neuer Benutzer

    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!
     
  2. wildschwein

    wildschwein Neuer Benutzer

    Ist das überhaupt möglich? Wäre über eine Hilfe sehr dankbar.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Bestimmt möglich, aber ohne Deine Tabellenstruktur zu kennen können wir nur rumrätseln. Dazu fehlt (mir) die Zeit.
     
  4. wildschwein

    wildschwein Neuer Benutzer

    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)
     
  5. akretschmer

    akretschmer Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden