Announcement

Collapse
No announcement yet.

2 Tabellen mit teilweise gleichen Einträgen

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

  • 2 Tabellen mit teilweise gleichen Einträgen

    Hallo zusammen,

    ich als SQL Neuling habe ein Problem mit 2 Tabellen.
    Ich möchte 2 Lagerorte (A und B) auf Lagerbestände abfragen. In diesen beiden Lagerorte lagern teilweiwse die selben Artikel. Ich möchte bei den doppelt vorkommenden Artikeln eine Endsumme ausgeben.
    Gleichzeitig möchte ich aus Tabelle A alle und aus Tabelle B nur die Artikel auswählen, die im Feld Matchcode ein "sk" stehen haben.
    Ich hoffe, dass ich mich verständlich ausgedrückt habe. Für eine schnelle Info im Voraus vielen Dank.

  • #2
    Wie sehen den die entsprechenden Tabellen aus?

    Comment


    • #3
      Originally posted by Detroit View Post
      ...Ich möchte 2 Lagerorte (A und B) auf Lagerbestände abfragen. In diesen beiden Lagerorte lagern teilweiwse die selben Artikel.
      Boah, wie macht ihr das, dass dieselben Artikel an zwei verschieden Orten lagern? Wenn es die gleichen Artikel wären hätte ich das ja verstanden.

      Originally posted by Detroit View Post
      ...Ich möchte bei den doppelt vorkommenden Artikeln eine Endsumme ausgeben.
      Wie definierst du "Endsumme"?

      Originally posted by Detroit View Post
      ...Gleichzeitig möchte ich aus Tabelle A alle und aus Tabelle B nur die Artikel auswählen, die im Feld Matchcode ein "sk" stehen haben.
      Hier hilft sicherlich ein UNION ALL
      [highlight=sql]
      select feld1, feld2, ...
      from tabelle1
      union all
      select feld1, feld2, ...
      from tabelle2
      where Matchcode = 'sk'
      [/highlight]
      Originally posted by Detroit View Post
      ...Ich hoffe, dass ich mich verständlich ausgedrückt habe.
      Wenn ich ehrlich bin: Nicht wirklich!

      Gruß Falk
      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


      • #4
        Originally posted by Markus Kinzler View Post
        Wie sehen den die entsprechenden Tabellen aus?
        Die Tabellen haben u. a. die Felder Artikelnummer, Lagerkennung, Bestand, Eingangsdatum.
        Da pro Artikel und Lagerort mehrere Eingangsdatums möglich sind, soll hier nür das letzte bzw. das aktuellste Datum ausgewählt werden.

        Die Artikelbezeichnung kommt noch aus der Artikeltabelle, die noch dazu gejoint werden muss. ID ist hier Artikelnummer

        Comment


        • #5
          Originally posted by Falk Prüfer View Post
          Boah, wie macht ihr das, dass dieselben Artikel an zwei verschieden Orten lagern? Wenn es die gleichen Artikel wären hätte ich das ja verstanden.


          Wie definierst du "Endsumme"?


          Hier hilft sicherlich ein UNION ALL
          [highlight=sql]
          select feld1, feld2, ...
          from tabelle1
          union all
          select feld1, feld2, ...
          from tabelle2
          where Matchcode = 'sk'
          [/highlight]

          Wenn ich ehrlich bin: Nicht wirklich!

          Gruß Falk
          Sorry, natürlich meine ich gleiche Artikelnummern. Mit Endsumme meine ich, dass die Bestände aus beiden Lagerorten addiert werden.

          Comment


          • #6
            Hallo,

            dafür brauchst du dann noch einen "äußeren" SELECT. Betrachte das Ergebnis von UNION als neue Tabelle, die per GROUP BY Artikel-ID zusammenfasst und dabei die Bestände aus Lager A und Lager B addiert:
            [highlight=sql]SELECT (Artikel-Felder), SummeA, SummeB, Summe A + SummeB AS Gesamt
            FROM (
            SELECT (Artikel-Felder), SUM(Bestand) AS SummeA, 0 AS SummeB
            FROM tabelle1
            UNION ALL
            SELECT (Artikel-Felder), 0, SUM(Bestand)
            FROM tabelle2
            WHERE Matchcode = 'sk'
            )
            GROUP BY Artikel-ID;[/highlight]
            Das ist nur als Skizze zu verstehen, sollte aber zusammen mit den bisherigen Informationen helfen.

            Gruß Jürgen

            Comment


            • #7
              Originally posted by Jürgen Thomas View Post
              Hallo,

              dafür brauchst du dann noch einen "äußeren" SELECT. Betrachte das Ergebnis von UNION als neue Tabelle, die per GROUP BY Artikel-ID zusammenfasst und dabei die Bestände aus Lager A und Lager B addiert:
              [highlight=sql]SELECT (Artikel-Felder), SummeA, SummeB, Summe A + SummeB AS Gesamt
              FROM (
              SELECT (Artikel-Felder), SUM(Bestand) AS SummeA, 0 AS SummeB
              FROM tabelle1
              UNION ALL
              SELECT (Artikel-Felder), 0, SUM(Bestand)
              FROM tabelle2
              WHERE Matchcode = 'sk'
              )
              GROUP BY Artikel-ID;[/highlight]
              Das ist nur als Skizze zu verstehen, sollte aber zusammen mit den bisherigen Informationen helfen.

              Gruß Jürgen
              Hallo,

              vielen Dank für das Script. Es ist soweit verständlich. Eine Frage habe ich aber dennoch. Die Lagerorte sind in einer Tabelle enthalten. Dann ist die Abfrage doch auch noch anders oder?

              Gruß Michael

              Comment


              • #8
                Originally posted by Detroit View Post
                Hallo,

                vielen Dank für das Script. Es ist soweit verständlich. Eine Frage habe ich aber dennoch. Die Lagerorte sind in einer Tabelle enthalten. Dann ist die Abfrage doch auch noch anders oder?

                Gruß Michael
                Sorry, ich denke mal ich habe mich oben falsch ausgedrückt wo ich von 2 Tabellen spreche. Es gibt natürlich nur eine Tabelle Lagerorte in denen sich mehrere Läger angelegt sind.

                Gruß Michael

                Comment


                • #9
                  Hallo Michael,

                  es ist denkbar, dass man es in ein einziges SELECT quetschen kann; aber das wird wohl viel unübersichtlicher und dadurch vermutlich unsicherer. Ich würde das bisherige Verfahren fortsetzen: tabelle1 und tabelle2 tragen eben die gleichen Tabellennamen und arbeiten mit unterschiedlichem WHERE.

                  Jetzt wird aber langsam die Fragestellung unübersichtlich. Wenn du mit der Auswahl nach Lagerort/Artikel/lokalem Bestand nicht klar kommst, solltest du die genaue Tabellendefinition angeben sowie die Felder, die du haben willst.

                  Gruß Jürgen

                  PS. Du musst nicht innerhalb von drei Minuten zwei Beiträge schreiben. Solange noch niemand geantwortet hat, kannst du mit "Editieren" einen Beitrag ändern (so wie ich jetzt auch).

                  Comment

                  Working...
                  X