Kristin: Doppelzählungen verhindern

Beitrag lesen

Hi!

das erinnert mich alles an die zeit, als ich in einem rathaus in berlin für die stadtplaner gearbeitet hatte, da waren die daten auch so herlich im "beamten-stil" aufbereitet.

am Tabellen Layout kann ich leider nicht viel ändern, da ich das soweit übernommen habe. Das Design ist historisch seit 5 Jahren gewachsen...

die Daten kommen von der Post, dem statitischen Bundesamt, an deren Behörden, etc. daraus eine Einheit machen ist manchmal ein Kunststück :-)

nun aber wieder zu dir, weg von meinen alten erinnerungen. grundsätzlich ist dieser join problematisch, mal abgeshen davon, dass deine tabelle b nicht normalisiert ist (atomar). wenn ich alles richtig verstanden habe, dann hat ein landkreis immer eine eindeute PLZ, die in tabelle a steht ?

normalerweise kan eine PLZ zu mehreren Landkreisen gehören.
Das kommt aber bei unserer Anwendung nicht vor, da wir das verhindern bzw. korrigieren.

die Tabelle b sieht wie folgt aus
plz, gkz

eine plz kann zu mehreren gkzs gehören, eine gkz kann zu mehreren plz gehören.
Wir haben es aber so vereinbart, dass eine plz immer in ein Landkreis (erste 5 stellen) liegen muss.

Das die Tabelle b und andere nicht normalisiert sind, will ich nicht abstreiten. Einige sind/wurden nicht normalisiert, da sonst die SQL Abfragen zu lange dauern. Einige dauern schon unnormalisiert > 30 Minuten, normalisiert kamen wir manchmal auf > 2 Tage ;-)

Die Datenbank ist knapp 60GB gross und einige Abfragen gehen mit unterschiedlichsten Joins über 25 Tabellen.

soviel zur Theorie ;-)

Wie kann ich nun verhindern, dass durch das substr(...) Datenzeilen doppelt gezählt werden?

Wenn ich das mit der inneren SQL Abfrage mache, wird nichts doppelt gezählt. Gibt es eine saubere Lösung?