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

Abfrage über 3 Tbl's die nur zwei sind...

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von leegoo, 16 Juli 2012.

  1. leegoo

    leegoo Neuer Benutzer

    Hallo Zusammen, ich habe da eine Frage:

    Datenstruktur:
    Service (Tbl:CI) <haben> Systeme (Tbl:CI) <haben> Server (Tbl:CI)

    Wie oben dargestellt sind die eigentlichen Daten in der Tbl CI. Die Links, also welcher Service mit welchem System usw. verbunden ist, steht in der Tbl LinkedCI.

    Tabellen:
    1. Tbl: CI:
    2. Tbl: CITypedLinkCILink

    Gibt es eine Möglichkeit, dass der Select-Output wie folgt aussieht?

    Service Name | System Name | Server Name

    Mein jetziger Select liefert mir zwar die gewünschten Informationen aber eben leider auf 4 Zeilen anstelle von einer...

    SELECT c.Name, c.Description, c.CIType, c.RecId, pr.ChildRecId
    FROM CI AS c
    JOIN (
    SELECT tp.ParentRecId, tp.ChildRecId
    FROM CITypedLinkCILink AS tp
    JOIN CI AS cc
    ON tp.ChildRecId = cc.RecId
    ) AS pr
    ON c.RecId = pr.ParentRecId

    Hat jemand eine Idee?

    Vielen Dank für Eure Hilfe!
    Leegoo
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Hy,

    kannst du mal eine Beispielhafte ausgabe liefern, wie es jetzt aussieht und wie es aussehen soll?

    Danke LG
     
  3. leegoo

    leegoo Neuer Benutzer

    Hi PLSQL_SQL

    Vielen Dank für Deine Antwort.

    Im Moment sieht die Ausgabe so aus (siehe auch angehängtes Bild OutputIST.png):

    Name |Description | CIType |
    E-Mail Service | | Service |
    Finnova PRD | | System |
    Finnova PRD | | System |
    srvfin001 | | Server |

    In dem zugrundeliegenden Tool lassen sich diese Abhängigkeiten dann grafisch und als Baum darstellen:

    Service Name | System | Server
    E-Mail Service <-> Finnova PRD <-> srvfin001

    Das ist soweit ja ganz nett, aber ich benötige zwecks Weiterverarbeitung (Reporting) eine Aufstellung wie die Folgende:


    Service Name | System | Server
    E-Mail Service | Finnova PRD | srvfin001

    Leider komme ich da mit meinen 2 Joins nicht mehr weiter...

    Hättest Du da eine Idee?

    Vielen Dank für Eure Hilfe
    Leegoo
     

    Anhänge:

  4. ukulele

    ukulele Datenbank-Guru

    Ich bin mir mit der Verkettung nicht ganz sicher ob sie richtig ist, aber im wesentlichen ist das die richtige Vorgehensweise:
    Code:
    SELECT    c1.Name AS [Service Name],
            c2.Name AS [System Name],
            c3.Name AS [Server Name]
    FROM    CI c1,
            CI c2,
            CI c3,
            CITypedLinkCILink tp1,
            CITypedLinkCILink tp2
    WHERE    c1.CIType = 'Service'
    AND        c2.CIType = 'System'
    AND        c3.CIType = 'Server'
    AND        c1.RecId = tp1.ParentRecId
    AND        tp1.ChildRecId = c2.RecId
    AND        c2.RecId = tp2.ParentRecId
    AND        tp2.ChildRecId = c3.RecId
    PS: Wichtig wäre auch noch, das die Daten immer vollständig vorhanden sind. Fehlt ein Eintrag, wird alles nicht angezeigt. Das kann man natürlich auch noch einbauen, dann muss man nur genau wissen was vorkommt und was man will.
     
    PLSQL_SQL gefällt das.
  5. leegoo

    leegoo Neuer Benutzer

    Hi ukulele

    Deine Verkettung stimmt genau und funktioniert perfekt! Vielen Dank für Deine Hilfe!
     
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