Adressdatenbank ergänzen



  • Hallo,

    müßte eine Adressdatenbank bearbeiten, dies würde ich gerne mittels eines kleinen Programms machen, da es sehr viel Arbeit spart.

    Die Datenbank ist ungefähr so aufgebaut:

    Name / Vorname / Straße / Familienangehörige /
    Meyer / Michael / Musterstr. 1 /
    Meyer / Manfred / Musterstr. 1 /
    Meyer / Tanja / Mustersts. 1 /
    Schmidt / Lisa / Bahnhofstr. 10 /
    Schmidt / Ursula / Bahnhofstr. 10 /

    Nach erfolgter Bearbeitung soll die Tabelle dann so aussehen:

    Name / Vorname / Straße / Familienangehörige
    Meyer / Michael / Musterstr. 1 / Manfred, Tanja /
    Meyer / Manfred / Musterstr. 1 / Michael, Tanja /
    Meyer / Tanja / Musterstr. 1 / Michael, Manfred /
    Schmidt / Lisa / Bahnhofstr. 10 / Ursula /
    Schmidt / Ursula / Bahnhofstr. 10 / Lisa /

    Im Feld Familienangehörige sollen also immer die Vorname der Familienangehörigen der jeweiligen Person eingetragen werden.
    (Theoretisch kann es natürlich sein, daß bei einer Adresse mehrere Familien mit dem gleichen Nachnamen wohnen, das kann dann aber ignoriert werden.)

    Was die gedankliche Umsetzung des Programms anbetrifft, dachte ich, daß ein Schleifendurchlauf mit Abgleich des Straßennamens der nächsten Spalte kein schlechter Anfang wäre.
    Bei einem Treffer wird einfach der Vorname in einen String gespeichert.

    Sobald der Vergleich des Straßennamen keinen Treffer mehr erzielt, werden einfach die Strings zusammengefügt und die jeweiligen Felder eingetragen.
    Dazu könnte man eine Schleife rückwärts laufen lassen, solange wie halt der Ableich des Straßennamens wieder einen Treffer erzielt, erfolgt der Eintrag des Gesamtstrings in das Feld Familienangehörige.

    Wie kriege ich es aber hin, daß nur die Vornamen der Angehörigen dort eingetragen werden und nicht von allen Familienmitgliedern?



  • Hallo

    Als aller erstes mal die Frage, ist es eine "richtige" Datenbank? Wenn ja, dann wäre es einfacher, wenn du die Problematik mit TSQL-Mitteln löst.

    Wenn nicht, dann fallen mir 2 Wege ein:

    1. Dein erste Ansatz ist schon nicht schlecht, ich würde dann aber alle gefundenen Namen in eine Liste speichern, und dann ein 2tes mal durchlaufen und wieder bei den gleiche Personen halten und diesmal dort alle Namen eintragen aus dem auf dessen Zeile du stehst.
      Hier als Verbesserung wäre noch zu sagen, du könntest dir ein Datenstruktur aufbauen, die eine Liste für jede Adresse speichert, beim ersten Durchlauf füllst du die Vornamen in die passenden Listen ein, und im 2ten Durchlauf dann wie oben die Personen eintragen.

    2. Die einfachste Variante, du nimmst 2 Schleifen, die eine ist die schreibende, die andere die lesende. Die lesende arbeitet für jeden Datensatz der schreibende die komplette Datenbank durch und ermittelt die Vornamen, die dann mit der schreibenden eingetragen wird. Wenn der lesende durch ist, dann die schreibende eins weiter, und so weiter und so fort...

    Gruß mdn



  • Marc-O schrieb:

    Als aller erstes mal die Frage, ist es eine "richtige" Datenbank? Wenn ja, dann wäre es einfacher, wenn du die Problematik mit TSQL-Mitteln löst.

    Du hast aber eine etwas eingeschränkte Vorstellung von richtigen Datenbanken ^^



  • Danke für die Tips soweit 🙂



  • Mechanics schrieb:

    Marc-O schrieb:

    Als aller erstes mal die Frage, ist es eine "richtige" Datenbank? Wenn ja, dann wäre es einfacher, wenn du die Problematik mit TSQL-Mitteln löst.

    Du hast aber eine etwas eingeschränkte Vorstellung von richtigen Datenbanken ^^

    Deswegen ja auch in "". Natürlich gibt es mehr als nur die relationalen Datenbank, was ich eigentlich damit ausdrücken wollte, war nur ob ein DBMS benutzt, welches direkte TSQL Unterstützung bereitstellt.

    MfG mdn



  • Marc-O schrieb:

    Natürlich gibt es mehr als nur die relationalen Datenbank, was ich eigentlich damit ausdrücken wollte

    Ich glaub, du hast mich immer noch nicht verstanden 😉 TSQL ist der Microsoft SQL Server Dialekt. Bei Oracle heißt es z.B. PL/SQL.



  • Ups fällt mir gar nicht mehr auf, des T sollte weg 😉

    Ja des stimmt wenn man meistens nur an einer Datenbank arbeitet bleibt ein des irgendwie hängen.


Log in to reply