Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verknüpfung zweier Tabellen einer Datenbank mit unterschiedlichem Umfang

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Verknüpfung zweier Tabellen einer Datenbank mit unterschiedlichem Umfang

    Liebe User,

    ich möchte aus meiner Datenbank Informationen ausgeben lassen, bei denen es unabdingbar ist, dass ich 2 Tabellen verwende. Der konkrete Sachverhalt ist irrelevant, daher beschreibe ich das Vorhaben an einem einfach Modell:

    Tabelle 1:

    ID | Information1
    01 | 10
    02 | 20
    03 | 30
    04 | 40
    05 | 50
    06 | 60



    Tabelle 2:

    ID | Information2
    01 | 5
    03 | 10
    04 | 15


    Der Sachverhalt ist klar: Ich habe zwei Tabellen, die je eine ID-Spalte haben, deren beinhaltende ID-Nummern eindeutig zugeordnet werden können und auch zwischen den Tabellen einander zugeordnet sind. Das heißt: Das was ich in Tabelle 1 mit ID beschreibe ist auch wirklich das selbe, was ich in Tabelle 2 mit eben der selben ID beschreibe.

    Jetzt ist mein Ziel eine Ausgabe ALLER 6 Spalten aus Tabelle 1 aber unter Berücksichtigung der Informationen aus Tabelle 2. Diese sollen von den Informationen aus Tabelle 1 subtrahiert werden.

    Ich habe dies über JOIN versucht:

    SELECT Tabelle1.Information1 - Tabelle2.Information2 AS Information3
    FROM (SELECT ID, Information1 FROM Tabelle1) AS Tabelle1
    JOIN (SELECT ID, Information2 FROM Tabelle2) AS Tabelle2
    ON Tabelle1.ID = Tabelle2.ID

    Allerdings hat dies zur Folge, dass bei der Ausgabe lediglich die Zeilen ausgegeben werden, die auch in beiden Tabellen auftauchen. Also die Zeilen, die die in ihrer ID-Spalte 01, 03 oder 04 stehen haben. Gewollt ist allerdings, dass alle Zeilen aus Tabelle 1 ausgegeben werden. Sollte es keine Entsprechung in Tabelle 2 geben, um die gewollte Subtraktion durchzuführen, müsste logischer Weise das Ausgabe-Resultat (oben als Information3 bezeichnet) der Information1 aus Tabelle 1 entsprechen.

    Daraus schließe ich, dass ich das mit JOIN so nicht umsetzen kann. Kann mir jemand bitte den Hinweis geben, wie ich das Problem lösen kann um zum gewünschten Ergebnis zu kommen?

  • #2
    Zitat von Eine_Frage Beitrag anzeigen
    Jetzt ist mein Ziel eine Ausgabe ALLER 6 Spalten aus Tabelle 1 aber unter Berücksichtigung der Informationen aus Tabelle 2. Diese sollen von den Informationen aus Tabelle 1 subtrahiert werden.


    Daraus schließe ich, dass ich das mit JOIN so nicht umsetzen kann. Kann mir jemand bitte den Hinweis geben, wie ich das Problem lösen kann um zum gewünschten Ergebnis zu kommen?
    Was Du schließt ist Bullshit, ich schließe aus dem, was Du schreibst, daß Du Grundlagen lernen solltest.

    Code:
    test=*# select * from t1;
     id | i1
    ----+----
      1 | 10
      2 | 20
      3 | 30
      4 | 40
      5 | 50
      6 | 60
    (6 rows)
    
    Time: 0,179 ms
    test=*# select * from t2;
     id | i2
    ----+----
      1 |  5
      3 | 10
      4 | 15
    (3 rows)
    
    Time: 0,194 ms
    test=*# select t1.id, i1-coalesce(i2,0) from t1 left join t2 on t1.id=t2.id;
     id | ?column?
    ----+----------
      1 |        5
      2 |       20
      3 |       20
      4 |       25
      5 |       50
      6 |       60
    (6 rows)
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Zitat von akretschmer Beitrag anzeigen
      Was Du schließt ist Bullshit, ich schließe aus dem, was Du schreibst, daß Du Grundlagen lernen solltest.

      Code:
      test=*# select * from t1;
       id | i1
      ----+----
        1 | 10
        2 | 20
        3 | 30
        4 | 40
        5 | 50
        6 | 60
      (6 rows)
      
      Time: 0,179 ms
      test=*# select * from t2;
       id | i2
      ----+----
        1 |  5
        3 | 10
        4 | 15
      (3 rows)
      
      Time: 0,194 ms
      test=*# select t1.id, i1-coalesce(i2,0) from t1 left join t2 on t1.id=t2.id;
       id | ?column?
      ----+----------
        1 |        5
        2 |       20
        3 |       20
        4 |       25
        5 |       50
        6 |       60
      (6 rows)

      Und ich schließe aus dem, was du schreibst, dass du weniger vor dem PC rumhängen solltest und mal deine sozialen Kompetenzen pflegen solltest.

      Ps.: Nichtsdestotrotz danke für die Hilfe.

      Kommentar


      • #4
        Zitat von Eine_Frage Beitrag anzeigen
        Und ich schließe aus dem, was du schreibst, dass du weniger vor dem PC rumhängen solltest und mal deine sozialen Kompetenzen pflegen solltest.
        Score adjusted.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar

        Lädt...
        X