Announcement

Collapse
No announcement yet.

Bestimmen von Datensätzen über eine Summe

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

  • Bestimmen von Datensätzen über eine Summe

    Moin moin,

    ich habe ein Problem beim erstellen einer Abfrage.

    Ich habe eine Tabelle mit mehreren Artikeln. Die Artikel gehören einer Warengruppe an und haben eine Spalte mit der Breite des Artikels.

    Die Tabelle T_Artikel im groben:
    ArtNr | Warengruppe | Breite
    1 | 0815 | 0,5
    2 | 0815 | 0,35
    3 | 0815 | 0,4
    4 | 4711 | 0,1

    Jetzt möchte ich ein Update über die ersten n Artikel einer bestimmten Warengruppe machen, deren Summe der Breite zusammen nicht 1m nicht überschreitet. Leider stehe ich jetzt total auf dem Schlauch und weiß nicht, mit welchem Befehl ich das einfach innerhalb meiner stored procedure lösen kann.

    In dem Beispiel oben soll eine Spalte der beiden Artikel 1 und 2 der Warengruppe 0815 geändert werden, da diese zusammen nicht einen Meter überschreiten. Artikel 3 soll unangetastet bleiben.

    Vielleicht hat ja jemand ne Idee...

    MfG
    Joe

  • #2
    Hallo,

    SQL arbeitet Mengenorientiert und nicht Zeilenweise. Sowas wie Update solange bis eine Bedingung erfüllt ist, gibt es nicht. Du mußt die zu ändernde Menge schon eindeutig beschreiben können. Im konkreten Fall geht das nicht, da die Bedingung nicht nur von Artikel 1 + 2 sondern auch von Artikel 1 + 3 und 2 + 3 erfüllt wird. Auch jeder Artikel für sich hat in der Summe eine Breite < 1m.
    Hier hilft dir also nur eine Prozedur mit einer Schleife über die möglichen DS und Einzelupdate.

    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


    • #3
      Danke

      Hallo Falk,

      so ähnlich habe ich es jetzt auch in der Zwischenzeit gemacht.

      Mit einem Cursor und Fetch prüfe ich, wie viele Stücke aus der Warengruppe die Gesamtmenge nicht überschreiten.
      Mit dem Ergebnis "count" und einem Update über Top ("count") aus der Warengruppe erziele ich mein gewünschtes Ergebnis.

      Zum Glück kann der 2005er mit einer Variablen für das Top arbeiten.

      Danke und Gruß
      Joe

      Comment

      Working...
      X