Announcement

Collapse
No announcement yet.

Abfrage

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

  • Abfrage

    Hallo,

    ich benötige mal Eure Hilfe: Ich habe 2 Tabellen:

    1.Umsatz: Artikelnr, Groesse, ...
    2.Bestand: Artikelnr, Groesse, Lager, Bestand ...

    Ich benötige nun eine Abfrage, die folgendes liefert:

    ... Umsatz.Artikelnr, Umsatz.Groesse, ... Bestand.Bestand[Lager1], Bestand.Bestand[Lager2] ...

    Im Prinzip soll zu jedem verkauften Artikel noch der Lagerbestand angezeigt werden. Dieser kann über mehrere Lager verteilt sein.

    Dank Euch!

  • #2
    Hallo,

    im Prinzip willst du eine Pivotierung, sprich Datensätze als Spalten. Wenn die Anzahl der Lager fix ist und auch nicht verändert wird, dann könntest du das Fix in einem SELECT machen, ansonst wirst du etwas dynamischeres in Form einer Stored Procedure brauchen.

    lg,
    Thomas
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Hallo Thomas,

      danke für die Antwort.

      Leider bin ich nicht unbedingt versiert in der Erstellung von Abfragen. Ich habe Select genommen - bekomme das aber irgendwie nicht hin... Wie würdest Du das denn machen?

      LG
      Gerald

      Comment


      • #4
        Nachsatz: Und beide Tabelle mit Join über die Artikelnr verbinden.

        Comment


        • #5
          Hallo,

          eigentlich hast ja alles in der Tabelle Bestand, aber ich denk mal, da hast auch noch Felder in Umsatz, die du anführen möchtest, aber nicht in deinem Beispiel dargestellt sind.

          Du wirst trotzdem irgenwie wissen müssen, welche Lager vorhanden sind, oder du baust dir das SQL-Statement dynamisch in deiner Client-Anwendung zusammen. Ich geb dir mal folgendes SQL:

          [highlight=sql]
          select
          u.artikelnr
          , u.groesse
          , (select sum(b.lager) from bestand b where u.artikelnr = b.artikelnr and u.groesse = b.groesse and b.lager = 'Lager 1') as lager1
          , (select sum(b.lager) from bestand b where u.artikelnr = b.artikelnr and u.groesse = b.groesse and b.lager = 'Lager 2') as lager2
          ...
          from
          umsatz u
          [/highlight]

          Hier ist auch die Frage, ob die Kombination Artikelnr, Groesse und Lager in Bestand UNIQUE ist. Wenn ja, dann brauchst das SUM oben im Inline-Select nicht. Wenn nein, dann brauchst eine Aggregatsfunktion, damit immer genau 0 oder ein Datensatz rauskommt.

          Thomas
          Thomas Steinmaurer

          Firebird Foundation Committee Member
          Upscene Productions - Database Tools for Developers
          Mein Blog

          Comment


          • #6
            Hallo Thomas,

            habe erst heute Zeit es zu probieren - trotzdem schonmal vielen Dank!

            LG Gerald

            Comment


            • #7
              Super - ist der richtig Weg! Danke

              Comment

              Working...
              X