collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 102
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14809
  • stats Beiträge insgesamt: 76028
  • stats Themen insgesamt: 10230
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 933

Autor Thema: Systematiken (mehrere in der gleichen Tabelle) abgleichen  (Gelesen 149 mal)

Offline nurmikss

  • Access-User
  • *
  • Beiträge: 60
Wir verwenden zur Gliederung unserer Sachen verschiedene Systematiken (so ähnlich wie Büchereisystematiken). Das Fachprogramm sieht dafür eine einzige Tabelle vor, in der (vereinfacht) jede Systematik eine ID bekommt (Spalte Sys_ID) und in einer weiteren Spalte (Syg-Name) die einzelnen Einträge stehen (hier ein Ausschnitt aus unserer großen, umfangreiche Haupt-Systematik die mit Großbuchstaben beginnt (die nenne ich mal „großer Plan“, unten blau markiert):

  • Sys_ID   Syg-Name
    14   H 2 Bevölkerungsbewegung
    14   H 2.1 Allgemeines
    14   H 2.2 Wanderungen
    14   H 2.2.1 Binnenwanderung
    usw. ...
Leider haben unsere Vorgänger sich nicht daran gehalten, sondern mehrere Systematiken unter einer Sys_ID eingespeichert, die sich nur durch die Syntax im Syg_name unterscheiden. So gibt es unter Sys_ID 14 den „großen Plan“ s. oben) und zusätzlich (auch mit anderen Sys_ID) noch weitere Systematiken, die z.B. mit römischen oder arabischen Ziffern beginnen:
  • Sys_ID   Syg-Name
    14   II Handel und Gewerbe
    14   II Fabrikansichten
    usw. ...
    14   05-H 2 Bevölkerungsverschiebung
    14   05-H 2.1 Allgemeines
    usw...
    16   33-H 2.1 Allgemeines
    16   33-H 2.2 Wanderungen
    16   33-H 2.2.1 Binnenwartung
    16   33-H 2.2.2 irgendwasanderes
Mein Ziel ist, die Systematiken zu bereinigen und am Ende eine Tabelle zu haben, in der jede Systematik ihre eigene Sys_ID hat.
Außerdem möchte ich Systematiken, die Untermengen des „großen Plans“ sind (oben grün markiert), entfernen. Zuvor muss ich prüfen, ob sie tatsächlich redundant sind, weil im Lauf der Zeit Inkonsistenzen entstanden sind (oben rot markiert). Das können Unterscheidungskürzel sein („05-“), Schreibfehler, unschädliche Synonyme oder aber relevante inhaltliche Unterschiede.
Meine Frage:
Wie kann ich den „großen Plan“ und eine andere Systematik so darstellen, dass ich sehe, wo sie voneinander abweichen ?
Zum Beispiel: Vergleich
„Großer Plan“ (alle mit Sys_ID = 14 und Syg_Name beginnt mit Großbuchstaben (RegEx: "^[A-Z] "))
mit
Systematik Nr. 33 (alle mit Sys_ID = 16 und Syg_Name beginnt mit „33-“):
Die Auswertung sollte ergeben, dass
1.: der rechte Teil von „33-H 2.2.1 Binnenwartung“ von „H 2.2.1 Binnenwanderung“ abweicht und
2.: der Eintrag „33-H 2.2.2 irgendwasanderes“ im „großen Plan“ nicht vorkommt.
Lösungsansatz:
Ich stelle die Tabelle als Alias sich selbst gegenüber (Tabelle1 - Tabelle2),
begrenze die Auswahl aus Tabelle1 auf alles, was Sys_ID = 14 hat und  Syg_Name mit Großbuchstabe+LEER beginnt (die römische „I“ kann vernachlässigt werden),
begrenze die Auswahl aus Tabelle2 auf alles, was Sys_ID = 16 hat und Syg_Name mit „33-“ beginnt
und vergleiche Tabelle1.Syg_Name mit Right(Tabelle2.Syg_Name,Len(Tabelle2.Syg_Name)-3), also ohne die führende "33-".

Aber wie mache ich das praktisch ? Ich habe mich in JOINs verheddert. Kann mir jemand helfen ?
Ich verwende Microsoft Office Professional plus 2010
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1321
Re: Systematiken (mehrere in der gleichen Tabelle) abgleichen
« Antwort #1 am: März 27, 2020, 09:20:20 »
Das ist deutlich anders und komplexer als typische Abfragelösungen. Mit einer "einfachen" Abfrage kommt man da nicht hin. Zudem dürfte eine solche Maßnahme einmalig sein, wenn auch gebündelt in einem VBA-Ablauf wiederholbar. Damit kann man von eigentlichen nötigen Techniken durchaus deutlich abweichen, ein Funktionieren an sich steht im Vordergrund.

Zuerst würde ich in den Tabellen zusätzliche Felder anlegen und dort atomare Informationen aus Syg-Name ablegen:
33-H 2.2.1 Binnenwartung

Über den Grünanteil kann man dann bspw. Datensätze aus Plan und Ist eindeutig gegenüberstellen und vergleichen, also ob es ein Pendant in der anderen Tabelle gibt oder nicht, ob zugehörige Datensatzinhalte identisch sind.

Bei voller Gleichheit würde ich dann solche Datensätze aus der vorhandenen Tabelle in eine strukturgleiche Tabelle verschieben, damit dann die Datenmenge der Ausgangstabellen für Folgevergleiche deutlich kleiner und übersichtlicher wird. Aus diesem "Rest" müsste man sich dann Folgevergleiche überlegen, die dann wohl immer individueller und spezifischer werden würden, bis sich die manuelle Überarbeitung eher lohnt. Für eine vorgesehene automatisierte Wiederholung sollte aber der manuelle Anteil gegen Null gehen.

Ob man dann später die Einzelinhalte in einem Tabellenfeld wieder gebrauchserschwerend zusammensetzt oder diese Zusammensetzung einer Abfrage überlässt, wäre dann eine Folgeüberlegung.

Soweit meine Überlegungen dazu.
Mit freundlichem Glück Auf!

Eberhard
 

Offline nurmikss

  • Access-User
  • *
  • Beiträge: 60
Re: Systematiken (mehrere in der gleichen Tabelle) abgleichen
« Antwort #2 am: März 27, 2020, 16:30:58 »
Danke, das hat weitergeholfen.

Statt mit einer Aliasdatei zu arbeiten, habe ich die für die Auswertung relevanten Felder in eine neue Tabelle „tbl_Systematik2_Arbeit“ kopiert (dadurch wird der zuvor berechnete Ausdruck zu einem Textfeld S2_SYG_Name_rechts und wird in der "ON"-Klausel akzeptiert).

Eine darauf aufbauende Abfrage mit inner Join mit der neuen Tabelle, zeigt alle übereinstimmenden Datensätze,
begrenzt auf den „großen Plan“ (Einträge fangen mit Großbuchstabe an)
und die zu prüfende Spezialsystematik (hier die, deren Einträge mit „33 “ beginnen).
Die oben genannten Inkonsistenzen (Schreibfehler, Einträge, die nur ein einer der beiden Systematiken vorkommen) werden aber durch diese Abfrage noch nicht dargestellt.
  • SELECT
    Orig.Sys_ID,
    Orig.Syg_Name,
    Doppel.Sys_ID,
    Doppel.S2_Syg_Name,
    Doppel.S2_Syg_Name_rechts
    FROM M_SysGruppen as Orig
    inner Join tbl_Systematik2_Arbeit as Doppel
    on Orig.Syg_Name = Doppel.S2_Syg_Name_rechts
    where enthaltenRegEx (Orig.Syg_Name, "^[A-Z] ")
    and enthaltenRegEx (Doppel.S2_Syg_Name, "^33 ")

Wie kann ich diese Abfrage noch erweitern, dass auch die übrigen Einträge der zu prüfenden Systematik angezeigt werden, die keine (exakte) Entsprechung in „großen Plan“ haben, also z.B.:
  • 16   33-H 2.2.1 Binnenwartung
    16   33-H 2.2.2 irgendwasanderes

« Letzte Änderung: März 27, 2020, 16:39:11 von nurmikss »
Ich verwende Microsoft Office Professional plus 2010
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1321
Re: Systematiken (mehrere in der gleichen Tabelle) abgleichen
« Antwort #3 am: März 28, 2020, 08:51:33 »
Zitat
keine (exakte) Entsprechung
Da kommt das Thema Ähnlichkeit ins Spiel. Umsetzung z.B. über
- LIKE Muster (in einfachen Fällen)
- RegEx. Die Pattern sind aber extrem stark selektierend und müssten sehr präzise formuliert sein. Ein Muster "über alles" bei "Kreativ"-Eingaben von Usern halte ich für unmöglich, mindestens aber für extremst aufwändig. Bei einem händischen Vergleich hätte man da wenigstens einen laufenden Fortschritt.
- Kölner Phonetik und ähnliche Methoden.

Wie oben schon mal gesagt würde ich aber die "Guten" in eine Fertig-Tabelle verschieben, um solche spezielleren und aufwändigeren Methoden nur auf die Restmenge anwenden zu müssen. Dies deshalb, weil ich grundsätzlich größere Datenmengen unterstelle und ein Laufzeitproblem vermeiden möchte, zum anderen hat man bei einem Rest eher eine Übersicht, um sich über zusätzliche Muster und Tests klar werden zu können.

Ich würde schon nicht versuchen, Deine gezeigten acht Zeilen in eine Regel pressen zu wollen. Vermutlich sind es ein paar mehr ...
Mit freundlichem Glück Auf!

Eberhard
 

 


Advertisment / Werbung - Amazon Affiliate Links