Announcement

Collapse
No announcement yet.

SQL - Rekursionen / Stücklisten

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

  • SQL - Rekursionen / Stücklisten

    Hallo,

    ich habe ein heftiges Problem Stücklisten aus einer bestehenden Datenbank aufzulösen.

    Folgende drei Tabellen habe ich zur Verfügung:

    Tabelle1 - Artikel
    ArtNr (int)
    Bezeichnung (char)

    Tabelle2 - Komponenten
    TeileNr (int)
    Bezeichnung (char)

    Tabelle3 - Stückliste
    ArtNr (int) -> Bezeichnung des Artikels kommt dann aus Tabelle1
    TeileNr (int) -> kann alternativ eine ArtNr oder TeileNr sein, die Bezeichnung muß dann alternativ aus der jeweiligen Tabelle kommen
    Anzahl (int) -> zur Verwendung kommende Anzahl
    Verfügbar (boolean) -> Artikel am Lager verfügbar true/false

    Dabei kann in dem fertigen Produkt (Artikel) eine beliebige Anzahl Artikel und Teile zur Verwendung kommen. Durch den Einsatz von Artikeln als Teil entsteht eine quasi "beliebig" tiefe Stückliste die aufgelöst werden muß.

    Wie kann ich die Zusammensetzung eines Produktes per SQL am sinnvollsten auflösen? Ich habe hierzu schon reichlich gegoogelt, aber leider nicht einmal einen Lösungsansatz gefunden.

    Würde mich freuen, wenn hier jemand einen Lösungsansatz für mich hätte,

    Danke und Grüße,

    Stefan

  • #2
    Nachdem das nach Rekursion aussieht, würde ich mir dazu eine storedProc oder eine function schreiben und dabei temporäre Tabellen verwenden. Am besten, du beginnst ganz einfach, schaust dir jedes Zwischenergebnis an und baust das immer weiter aus. Wenn du mal nach "TSQL rekursion" googelst findest du einiges an Infos dazu.
    Selbst wenn es irgendwie auch mit einem einzigen TSQL-Statement ginge - das ist dann sicher so komplex, dass es später weder jemand versteht geschweige denn bei Bedarf ändern könnte. Darum würde ich das ganz gemächlich angehen - und selber machen, denn was fertiges, was zu 100% passt, wirst du sowieso nicht finden.

    ... ist zumindest meine Meinung
    Helmut

    Comment


    • #3
      Hallo,

      google mal nach "SQL Server 2005 CTE". Das sind "Common table expresseion". Mit diesen lässt sich ganz einfach eine rekursive Hierarchie auflösen.

      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment


      • #4
        @hwoess: Hallo Helmut, danke für den Hinweis, temporäre Tabellen anzulegen hatte ich auch schon in Betracht gezogen, weil mir irgendwie sonst keine Lösung eingefallen ist - werde mir aber die TSQL - stored procedures hierzu mal genauer unter die Lupe nehmen.

        @gfoidl: Habe die DB leider nur unter einem SQL-Server 2000 laufen, und werde ein Update auf SQL-2005 wahrscheinlich nicht genehmigt bekommen.

        danke erst einmal für die Hinweise,

        Stefan

        Comment

        Working...
        X