Announcement

Collapse
No announcement yet.

Anfrage LEFT JOIN mit angeleiteter Tabelle - Null-Werte

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

  • Anfrage LEFT JOIN mit angeleiteter Tabelle - Null-Werte

    Hallo, da ich das passende EER-Diagramm(*.jpg) nicht Uploaden konnte (Image resize failed due to your image library not having support for this image type.), probiere ich es so.
    Wie man sehen kann, habe ich in der abgel. 2 Tab. die mit JOIN zusammengefügt werden (X).
    Diese soll nun mit einer 3. zusammengefügt werden.
    Bei
    X.Name und X.ArtNr, habe ich als Werte jedoch NULL und ich finde keine Lösung.
    JOIN über alle 3 tabellen?

    [highlight=sql] funktioniert anscheinend nicht


    Code:
    SELECT
        X.Name,
        X.Name,
        Be_Artikel.Artikel_ID,
        SUM(Be_Artikel.Menge) AS Menge,
        SUM(Be_Artikel.Geliefert) AS Geliefert
    FROM
        Be_Artikel
    LEFT JOIN(
        SELECT
            Artikelliste.ID,
            Artikelliste.ArtNr,
            Artikelliste.Name,
            Priority.PrioMenge,
            Priority.Datum
        FROM
            Artikelliste,
            Priority
        WHERE
            Priority.ID_Artikelliste = Artikelliste.ID
    ) AS X
    ON
        Be_Artikel.Artikel_ID = X.ID
    GROUP BY
        Be_Artikel.Artikel_ID
    Zuletzt editiert von Echdeneth; 17.02.2020, 14:04.

  • #2
    Das Forum ist leider nicht richtig in Schuss, daher funktiionieren einige Sachen nicht.
    Aber das Code Tag tut's auch.

    Wenn Du an der Stelle Nullwerte bekommst, wo Du sie nicht erwartest, musst Du das Quellselect untersuchen.

    Code:
    select Artikelliste.ID,
           Artikelliste.ArtNr, Artikelliste.Name,
           Priority.PrioMenge, Priority.Datum
      from Artikelliste, Priority --*
     where Priority.ID_Artikelliste = Artikelliste.ID
    Auch hier mal mit left join arbeiten, natürlich die "Join" Kriterien überprüfen. Dann ist außenrum noch Dein Group By Statement fehlerhaft, was zu willkürlichen Schrottergebnissen führt. Das solltest Du als erstes reparieren. Regel für Group By: Jede Spalte der Select Clause muss entweder aggregiert werden oder gruppiert. Versuch mal und melde Dich mit dem Ergebnis.

    * gibt es einen Grund, warum das kein "ordentlicher" Join ist?
    Zuletzt editiert von defo; 17.02.2020, 14:38.
    Gruß, defo

    Comment


    • #3
      Beide Abfragen führen (Nachgeprüft) zu exakt dem gewünschtem Ergebnis.



      Code:
      SELECT Artikelliste.ID,
              Artikelliste.ArtNr,
              Artikelliste.Name,
              Priority.PrioMenge,
              Priority.Datum
          FROM
              Artikelliste,
              Priority
          WHERE
              Priority.ID_Artikelliste = Artikelliste.ID
      Hierbei sei anzumerken, dass in Be_Artikel, Artikel_ID einen Fremdschlüssel darstellt
      und ein Artikel (Artikel_ID) mehrfach vorkommt und im Ergebnis addiert werden muss

      Code:
      SELECT
          Be_Artikel.Artikel_ID,
          SUM(Be_Artikel.Menge) AS Menge,
          SUM(Be_Artikel.Geliefert) AS Geliefert
      FROM
          Be_Artikel
      GROUP BY
          Artikel_ID
      Be_artikel.Artikel_ID n:1 Artikelliste 1:n Priority.ID_Artikelliste

      Ich bekomme die beiden jedoch nicht zusammen, egal was ich versuche...

      Comment


      • #4
        Originally posted by Echdeneth View Post
        Beide Abfragen führen (Nachgeprüft) zu exakt dem gewünschtem Ergebnis.
        ..

        Be_artikel.Artikel_ID n:1 Artikelliste 1:n Priority.ID_Artikelliste

        Ich bekomme die beiden jedoch nicht zusammen, egal was ich versuche...
        Was bedeutet exakt gewünscht?
        Hast Du die ID, die ausgegeben werden mal manuell abgeglichen? Kommt wirklich exakt das raus, was du möchtest? Wenn es so wäre, würde es ja keine NULL Werte geben.

        Originally posted by Echdeneth View Post
        Be_artikel.Artikel_ID n:1 Artikelliste 1:n Priority.ID_Artikelliste
        Da fehlen noch ein paar Spaltennamen.

        Hast Dud as Group By korrigiert?

        Gruß, defo

        Comment


        • #5
          Originally posted by defo View Post
          Hast Du die ID, die ausgegeben werden mal manuell abgeglichen? Kommt wirklich exakt das raus, was du möchtest?
          Ja, und bei Be_Artikel werden alle mit der gleiche Artikel_ID zusammenaddiert
          Originally posted by defo View Post
          Da fehlen noch ein paar Spaltennamen.
          Wollte nur die Fremdschlüsselbeziehung darstellen
          Originally posted by defo View Post
          Hast Du das Group By korrigiert?
          Versucht, ja...



          Comment


          • #6
            Habs hinbekommen:

            Code:
            SELECT
            Y.ArtNr,
            Y.Name,
            Y.Menge,
            Y.Geliefert,
            X.PrioMenge,
            X.Datum
            FROM
                (
                SELECT
                    Artikelliste.ArtNr,
                    Artikelliste.Name,
                    SUM(Be_Artikel.Menge) AS Menge,
                    SUM(Be_Artikel.Geliefert) AS Geliefert
                FROM
                    Be_Artikel,
                    Artikelliste
                WHERE
                    Be_Artikel.Artikel_ID = Artikelliste.ID
                GROUP BY
                    Be_Artikel.Artikel_ID
            ) AS Y
            LEFT JOIN(
                SELECT
                    Artikelliste.ArtNr,
                    Artikelliste.Name,
                    Priority.PrioMenge,
                    Priority.Datum
                FROM
                    Artikelliste,
                    Priority
                WHERE
                    Priority.ID_Artikelliste = Artikelliste.ID
            ) AS X
            ON
                Y.ArtNr = X.ArtNr

            Comment


            • #7
              Originally posted by Echdeneth View Post

              Wollte nur die Fremdschlüsselbeziehung darstellen

              Versucht, ja...
              Was hilft denn diese Darstellung ohne die Schlüsselfelder nur mit Tabellennamen.
              Da Du kein Datenmodel gepostet hast, kann man an der Ecke auch nur raten. Apropos: es muss kein ER Diagramm sein, einfach die Create Scripte der betroffenen Tabellen hier reinstellen.

              Ah, ich merke gerade, dass ich deinen letzten Post übersehen habe.

              Ich denke, dass kann man dann auch wieder zusammenfassen. Der Fehler im vorigen Versuch war ja offenbar ein falscher Join.
              Gruß, defo

              Comment


              • #8
                Der group by dürfte falsch sein
                Warum das nicht zusammengefasst:

                select
                Spalten
                from Tabelle_A
                inner join Tabelle_B on ....
                left join Tabelle_C on...
                where
                ....
                group by...
                Christian

                Comment


                • #9
                  Spalten addieren
                  https://entwickler-forum.de/forum/da...alten-addieren
                  Christian

                  Comment

                  Working...
                  X