Announcement

Collapse
No announcement yet.

Join auch ohne das Key-Werte vorhanden sind??

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

  • Join auch ohne das Key-Werte vorhanden sind??

    Hallo habe folgendes Problem:

    es gibt 4 voneinander unabhängige tabellen mit jeweils 2 Splaten (Key und Value)

    In eine neue tabelle will ich die werte zu einem bestimmenten key-Wert (der in allen tabellen identisch ist ) einfügen.

    Wenn ich die tabellen mit einem join verknüpfe und in nur einer Tabelle ein Wert vorhanden ist bekomme ich als ergebis leider gar nichts!

    Mein System ist ein MS-Sql Server.

    Bin für jede Idee dankbar

  • #2
    Stichwort: OUTER JOIN
    Forum: MS SQL Server und MSDE
    Beachten: Was gehört in dieses Forum!?
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Da passiert leider das selbe wie beim inner join... nämlich nix!

      Comment


      • #4
        Zeig mal deine Abfrage

        Comment


        • #5
          hab nochmal rumprobiert und mit left outer und 2 tabellen hats funktioniert! Nur wie klappt das nun mit 4 tabellen?

          Hier meine abfrage (ohne das Insert)

          Code:
          SELECT     *
          FROM         (PPM_ST_INV_PU p LEFT OUTER JOIN
                                PPM_ST_INV_mu m LEFT OUTER JOIN
                                PPM_ST_INV_ra r LEFT OUTER JOIN
                                PPM_ST_INV_others o LEFT OUTER JOIN
                                ON (p.processid = m.processid) AND (p.processid = r.processid) AND (p.processid = o.processid))
          WHERE     (p.processid = '3ca4e72b240c970adc1c2002dc5c4b9e')

          Comment


          • #6
            Wie sehen die Abhängigkeiten aus (Schema)?

            Comment


            • #7
              es gibt keine! ( keine constraints vorhanden!!!)

              Comment


              • #8
                Das meinte ich nicht. ich meinte die Relationen

                Comment


                • #9
                  achso...
                  alle tabellen haben den wert "processid" und eine weitere Spalte in der ein String steht. Der name lauten entsprechen der endung der tabelle RA_Role, mu_Role, pu_role und og_role (others)

                  meintest du diese info?

                  Comment


                  • #10
                    Welche Tabelle steht mit welcher in Beziehung?

                    Comment


                    • #11
                      Wie schon gesagt, die Tabellen haben keine Beziehung unter einander, ausser dass das Key-Attribut nach dem ich suche, bei allen tabellen, das selbe sein soll!

                      Comment


                      • #12
                        Hallo!

                        Ein left outer join kann eigentlich nie funktionieren, wenn es keine Tabelle gibt,die ALLE Schlüssel enthält, also muss ein FULL outer join ran.

                        Mal gaaaanz klein anfangen

                        --zwei Testtabellen nebst Daten
                        create table tempdb.dbo.test1 (k int, wert int)
                        create table tempdb.dbo.test2 (k int, wert int)
                        insert into tempdb.dbo.test1 values ( 1,1 )
                        insert into tempdb.dbo.test1 values ( 3,3 )
                        insert into tempdb.dbo.test2 values ( 2,2 )

                        Variante 1 mit einem full outer join
                        select case when a.k is null then b.k else a.k end as k, a.wert, b.wert from tempdb.dbo.test1 a full outer join tempdb.dbo.test2 b on a.k = b.k

                        Variante 2 mit einem kleinen union trick
                        select t3.k, a.wert, b.wert from (select k from test1 union select k from test2) as t3 left outer join tempdb.dbo.test1 a on a.k = t3.k left outer join tempdb.dbo.test2 b on b.k = t3.k

                        Für dein Viertabellenproblem ist Variante 2 besser geeignet.

                        BYE BERND

                        Comment


                        • #13
                          Danke für die Hilfe!
                          Hat leider ein wenig gedauert, bis ich das ganze Verstanden hab hab es funktioniert mittlerweile!

                          Comment

                          Working...
                          X