komplizierte Anfrage an merkwürdiger Datenbank

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • komplizierte Anfrage an merkwürdiger Datenbank

    Hallo,

    ich hab eine komische, nicht von mir strukturierte, SQL Datenbank in Access vorliegen. In dieser Datenbank (s.u. Teilauszug der DB)) soll ich für jedes Enderzeugnis die Arbeitsplätze (ArbPlatz) bestimmen. Ein Enderzeugnis besteht immer aus mehreren Materialen (rechte Tabelle, Ebene 1-6).
    Ein Teilerzeugnis kann wiederrum aus mehreren Materialien bestehen.
    Somit wird ein Enderzeugnis an mehreren ArbPlätzen hergestellt. Leider komme ich mir der Struktur der rechten Tabelle nicht klar bzw. mit der "Relation" Enderzeugnis->Ebene1->Ebene2->Ebene3->Ebene4->Ebene5->Ebene 6. Mir fehlt irgendwie der Ansatz wie ich damit klarkommen soll. Hat jemand vielleicht einen Hinweis?

    Schonmal vielen Dank für eure Antworten!

    Hier die Tablle




    JCD
    Zuletzt geändert von JCDenton; 28.04.2008, 23:37.

  • #2
    Dir fehlt vor allem der Ansatz das Problem konkret zu erläutern! Zeig mal Tabellenlayout her und erklär grafisch!
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Sorry, da hat was mit dem hochladen nicht geklappt. Ich hoffe die Erkärung macht mit dem Bild der Tabelle etwas mehr Sinn

      Kommentar


      • #4
        Hat niemand eine kleine Idee wie ich die SQL Abfrage gestalten kann? Bin wirklich verzweifelt...

        JCD

        Kommentar


        • #5
          Ich kann mich nur unset anschliessen. Beschreibe deine Tabellenstruktur, die Beziehungen, und v.a. etwas genauer, was du erreichen willst. Dein Bild hilft da nicht viel weiter.
          Gruss
          H2O

          Kommentar


          • #6
            Ich blick zwar auch nicht ganz durch, aber vermutlich musst du für jede Ebene einen Join mit der anderen Tabelle machen, um den Arbeitsplatz zuzuordnen. Eventuell geht dieser Join nur über eine dritte Tabelle, in der die Materialien stehen. Informiere dich mal über JOIN.

            Kommentar


            • #7
              Aso ich möchte für jedes Enderzeugnis (rechte Tabelle), das wiederum aus mehreren Materialien besteht (siehe "besteht aus Ebene X"=Material), die Arbeitsplätze der für dieses eine Enderzeunis bestimmen.

              Aus meinem Beispiel besteht das Enderzeunis 000010002 aus den Materialien A002K0055003, D0001.... und K0001R.... .
              K001R... besteht wiederum aus B0001... und S002KR.

              Jedes dieser Materialen hat in der linken Tabelle einen Arbeitsplatz.

              Jetzt möchte ich für das Enderzeugnis 000010002 sämtliche Arbeitsplätze bestimmen wo das Enderzeugnis und die Zwischenprodukte (A002K0055003, D0001.... und K0001R) und wiederum deren Zwischenprodukte hergestellt worden sind.

              Ich hoffe, dass die Erklärung jetzt etwas mehr Sinn macht. Sorry!

              JCD

              Kommentar


              • #8
                Wie sehen deine Ansätze aus?

                Kommentar


                • #9
                  Also mein Ansatz sieht so mit Join aus:

                  SELECT DISTINCT p.enderzeugnis, h.Material, p.[besteht aus (Ebene 1)], h.ArbPlatz
                  FROM [Gesamtstrukturstüli Ebene 1-6 gruppiert] AS p, [04 Fertigungsaufträge_gesamt] AS h
                  WHERE p.enderzeugnis=h.Material;

                  Jetzt sind da aber nur die Enderzeugnisse drin und nicht die Arbeitsplätze der "Zwischenmaterialien (Ebenen 1-6)". Ich kenne noch höchstens Unterabfragen in der Where Klausel, aber da hört es schon auf. Wie ich diese Relatiuon Enderzeugnis->Ebene 1-> Ebene2....->Ebene 6 und Ebene 1 ->Material da reinbekomme weiß ich wirklich nicht.

                  Am Ende soll ja nur dastehen:

                  Enderzeugnis XYZ: Arb1, Arb2, Arb3 und Arb4

                  wobei Arb1 vom Enderzeugnis stammt und Arb2 vom Zwischenmaterial 1 und Arb3 und Arb 4 von Zwischenmaterial 2.

                  JCD

                  Kommentar


                  • #10
                    Original geschrieben von JCDenton
                    Also mein Ansatz sieht so mit Join aus:
                    Wo ist denn da bitte ein Join? Ich sehe weder Left Join noch Inner Join oder irgend einen Join!
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar


                    • #11
                      ... FROM x, y ... WHERE x.a = y.b ...
                      ist auch ein Join.

                      Kommentar


                      • #12
                        Ja genau. Also ein weiterer Ansatz wäre für jede Ebene ebenfalls ein Join zu machen, nur weiß ich nicht wie man diese "Klauseln" in Where richtig verküpft und sicherstellt, dass die relation Enderzeugnis-> Ebene 1->....-> Ebene 6 erhalten bleibt. Stehe da wirklich total auf dem Schlauch.

                        JCD

                        Kommentar


                        • #13
                          ... nur belastender für den Server...

                          Kommentar


                          • #14
                            Die Effizienz ist egal. Bei der DB handelt es sich um eine Access Datenbank nicht um eine Server DB. Also die Rechenzeit ist egal!

                            Kommentar


                            • #15
                              Ich hätte mir den Kommentar wohl verkneifen sollen.
                              Deine Frage, wie du die Verknüpfung in der WHERE-Klausel unterbingen kannst, erledigt sich von selbst, wenn du den Join mal ausschreibst. Stichwort ON-Klausel.
                              Wenn du das gemacht hast, fällt es sicherlich auch leichter, die weiteren Joins hinzuzufügen.

                              Kommentar

                              Lädt...
                              X