Announcement

Collapse
No announcement yet.

spezieller Join

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • spezieller Join

    Hallo zusammen.

    Habe die unten aufgeführten Tabellen. Nun möchte ich einen select (oder wenn es geht auch einen join) der mir das Resultset mit den 4 Zeilen wiedergibt.

    Bekomme das irgendwie nicht so einfach hin. Meine SQL Kenntnisse sind aber auch nicht sehr tiefgreifend.

    Kann mir da jemand einen Tipp geben. Besten Dank!

    Reto E.



    Tabelle 1 (ID | Typ1):
    ----------------------
    1 | a
    1 | b
    2 | a

    Tabelle 2 (ID | Typ2):
    ----------------------
    1 | x
    2 | x
    2 | y

    Resultat (ID | Typ1 | Typ2):
    ----------------------------
    1 | a | x
    1 | b | x
    2 | a | x
    2 | a | y

  • #2
    Sorry das Beispiel müsste so aussehen:

    Tabelle 1 (ID | Typ1):
    ----------------------
    1 | a
    1 | b
    2 | a
    2 | b

    Tabelle 2 (ID | Typ2):
    ----------------------
    1 | x
    2 | x
    2 | y
    2 | z

    Resultat (ID | Typ1 | Typ2):
    ----------------------------
    1 | a | x
    1 | b | x
    2 | a | x
    2 | b | y
    2 | _ | z

    Comment


    • #3
      [HIGHLIGHT="sql"]
      SELECT T1.ID, T1.Typ1, T2.Typ2
      FROM Tabelle1 AS T1
      LEFT JOIN Tabelle2 AS T2 ON T1.ID = T2.ID
      [/HIGHLIGHT]

      Comment


      • #4
        Hallo,

        Leider nicht was ich gesucht habe. Durch den join werden alle Kombinationen gebildet.

        Grundlage ist eingentlich Tabelle 1. Dort werden so lange die Werte aus Tabelle 2 aufgefüllt bis kein Platz mehr ist. Danach muss eine neue Zeile mit Typ1 als 'leer' (resp. null).

        Im Beispiel wären also nur die Kombinationen für Typ1 und Typ2 von a,x oder b,y oder c,z oder jeweils mit null möglich.



        Tabelle 1 (ID | Typ1):
        ----------------------
        1 | a
        1 | b
        2 | a
        2 | b

        Tabelle 2 (ID | Typ2):
        ----------------------
        1 | x
        2 | x
        2 | y
        2 | z

        Resultat (ID | Typ1 | Typ2):
        ----------------------------
        1 | a | x
        1 | b | _
        2 | a | x
        2 | b | y
        2 | _ | z

        _ = sind leer (resp. null)

        Comment


        • #5
          Ich verstehe nicht genau, in welchem Zusammenhang Tabelle1 und Tabelle2 stehen. Gibt es da einen? So, wie die Inhalte und das Resultat aussehen, glaube ich kaum, daß Du das mit SQL hinbekommst.
          Dirk

          Comment


          • #6
            Ich bräuchte dies für einen Crystal Report so um möglichst viele Daten kompakt darzustellen.

            Tabelle 1 wären Einkäufe (a,b,c sind Lieferanten). Tabelle 2 wären Verkäufe (x,y,z sind Verkaufseinheiten).

            Zwischen abc und xyz besteht aber kein direkter Zusammenhang.

            Ich könnte mir Vorstellen, dass man es mit einem Cursor irgendwie hinbekommt, allerdings kann ich keine Cursor programmieren

            Comment


            • #7
              Originally posted by dropout View Post
              Zwischen abc und xyz besteht aber kein direkter Zusammenhang.
              Dann würde ich eine temporäre Tabelle erstellen, die dann von einer Applikation mit den passenden Informationen gefüllt wird, die wiederum von Crystal Reports per SQL abgefragt werden kann.

              Ohne existierenden Zusammenhang wird es für einen Join natürlich etwas schwierig.

              Also: Ein Stückchen Programmlogik zusammenbasteln und das in eine Programmiersprache der Wahl gießen, die temporäre Tabelle füllen und dann die Reports generieren, das müßte doch klappen.
              Dirk

              Comment


              • #8
                Schonmal versucht mit UNION zu arbeiten um alle SQL Tabelle anzeigen zu lassen?

                Beispiel:
                Select ...
                UNION
                Select ...
                UNION
                Select...

                Wenn du natürlich mit Fremdschlüssel arbeitest, wäre wohl ein guter Join vorzuziehen.

                Bin jetzt auch kein SQL Experte und vorallem nicht mit UNION, aber vielleicht hilft das ja weiter

                Comment

                Working...
                X