4 Replies Latest reply on Dec 24, 2014 2:22 AM by bernard52

    Tabellen-Beziehungen mit ODER Kriterien

    bernard52

      Hallo zusammen,

      Habe eine Tabelle "Mitarbeiter", die auf Kundendaten zugreifen sollen. Dabei soll die Postleitzahl (PLZ) der Kunden bestimmen, welche Mitarbeiter auf welche Kunden zugreifen können. Deshalb hat die Tabelle "Mitarbeiter" drei Feldpaare zu PLZvon und PLZbis (PLZvon1 / PLZbis1, PLZvon2 / PLZbis2 und PLZvon3 / PLZbis3. Das ermöglicht zu definieren, dass ein Mitarbeiter z.B. die Kunden mit PLZ 1000 bis 2500 und 4000 bis 6000 anzeigen kann. Habe das mit 1 Tabelle "Mitarbeiter" und 1 Tabelle "Kunden" versucht (Beziehung via PLZ), da aber alle Kriterien mit UND verbunden werden, stimmt das Ergebnis natürlich nicht. Anderer Versuch mit einer zweiten Instanz der Tabelle "Mitarbeiter" und Verbindung via PLZ (siehe Screenshot), da werden die PLZ der zweiten Instanz aber nicht berücksichtigt . Habe es auch mit einem Mehrfachfeld versucht (PLZ mit Absatz-Zeichen getrennt), geht auch nicht. Mit nur 1 PLZ-Paar funktioniert es natürlich tadellos...

       

      Die Tabellen verbinde ich mit Mitarbeiter::PLZvon1 ≤ Kunden::PLZ UND Mitarbeiter::PLZbis1 ≥ Kunden::PLZ. Mit nur dieser Verbindung klappt alles. Jetzt muss aber noch Mitarbeiter::PLZvon2 ≤ Kunden::PLZ UND Mitarbeiter::PLZbis2 ≥ Kunden::PLZ berücksichtigt werden, und zwar mit ODER.

       

      Also:

       

      Mitarbeiter::PLZvon1 ≤ Kunden::PLZ UND Mitarbeiter::PLZbis1 ≥ Kunden::PLZ

      ODER

      Mitarbeiter::PLZvon2 ≤ Kunden::PLZ UND Mitarbeiter::PLZbis2 ≥ Kunden::PLZ

       

      Evt. geht das gar nicht via Beziehung der Tabellen untereinander? Wäre aber elegant...

      Danke für Eure Hinweise

       

      Bernard

        • 1. Re: Tabellen-Beziehungen mit ODER Kriterien
          siplus

          Baue dich eine Hilfstabelle, die alle Nummern enthält, von 1000 bis 9999.

          Dann...

          Siehe Anhang.

          • 2. Re: Tabellen-Beziehungen mit ODER Kriterien
            mbraendle

            Guten Tag,

             

            die Verwendung von fix drei Feldpaaren von1-bis1, ..., von3-bis3 zeigt, dass das Datenmodell noch nicht durchnormalisiert ist. Was ist, wenn ein vierter Bereich nötig ist, oder nur zwei Bereiche benötigt werden?

            Deshalb sollte eine separate Bereichtabelle (mit Feldern ID_Bereich (Primärschlüssel), ID_Mitarbeiter (Fremdschlüssel), von, bis) erstellt werden.

            Der Vorschlag von siplus zeigt, wie es dann gehen könnte, nämlich über Verwendung eines Multischlüsselfelds, das die Teilbereiche der PLZ enthält und über eine Gleichheitsrelation auf die PLZ der Kunden verweist.

            Dieses Multischlüsselfeld kann über eine Custom Function (siehe z.B. FileMaker Pro Custom Functions, dort mit z.B. mit "Range" suchen) oder mit der von siplus vorgeschlagenen Technik mit ExecuteSQL aufgebaut werden, wobei dann die von-bis-Werte aus der Bereichstabelle verwendet werden. Die Custom Function hat den Vorteil, dass keine separate Tabelle verwendet werden muss.

            • 3. Re: Tabellen-Beziehungen mit ODER Kriterien
              rmeier

              !

              Hallo Bernard

               

              Ich habe dir mal einen anderen Ansatz, der Martin ebenfalls aufgegriffen hat.

              Damit bist du nicht eingeschränkt, was die Anzahl PLZ Bereiche betrifft und du hast keine unnötigen Beziehungen.

              SQL wäre die beste Lösung, mit den Custom Funktions ist es etwas übersichtlicher.

               

              Hoffe das hilft

               

              Grüsse

              Rico

              • 4. Re: Tabellen-Beziehungen mit ODER Kriterien
                bernard52

                Danke vielmals Euch dreien für die ausführlichen Antworten und Lösungen. Ich werde wohl noch etwas Zeit brauchen, bis ich die Funktionsweise Eurer Lösungen verstanden habe. Dass sie funktionieren habe ich sehen können - nur was im Detail geschieht muss ich mir anhand Eurer Beispiele noch erarbeiten...

                Wünsche Euch entspannte und gemütliche Festtage, Bernard