Weberkrebs: Feld automatisch mit Inhalt aus zwei anderen Tabellen Feldern

ich möchte in einer MySQL Datenbank in einer Kundentabelle ein neues Feld einrichten, welches dann mit folgenden Daten automatisch immer gefüllt wird.

Neues Feld in der Tabelle Kunden: matchcode

Benötigte Daten
1. Tabelle Adressbuch: Postleitzahl (z.B. 99999)
2. Tabelle Adressbuch: Strasse (z.B. Willhelmweg 5)

Dabei soll der matchode so gefüllt werden:

plz + ersten 5 GROSS-Buchstaben der Strasse
aus Beispiel also: 99999WILLH

Kann mir jemand bitte da helfen, wie das in der Datenbank usw. automatisch gemacht werden kann

Vielen Dank im Voraus

  1. Hallo

    Neues Feld in der Tabelle Kunden: matchcode

    Benötigte Daten

    1. Tabelle Adressbuch: Postleitzahl (z.B. 99999)
    2. Tabelle Adressbuch: Strasse (z.B. Willhelmweg 5)

    Dabei soll der matchode so gefüllt werden:

    plz + ersten 5 GROSS-Buchstaben der Strasse
    aus Beispiel also: 99999WILLH

    mit den Zeichenkettenfunktionen CONCAT() und SUBSTR().

    Kann mir jemand bitte da helfen, wie das in der Datenbank usw. automatisch gemacht werden kann

    Wenn Du diese Daten redundant halten willst, wären Trigger eine Möglichkeit, diese Spalte immer aktuell zu halten.

    Freundliche Grüße

    Vinzenz

  2. Hello,

    wenn ich das richtig sehe, benötigst Du keine extra Spalte für diesen "Matchcode", sondern kannst Dir direkt einen Kombinations-Index bauen, in den nur die angegebene Anzahl Zeichen eingeht:

    http://dev.mysql.com/doc/refman/5.1/de/create-index.html

    MySQL unterstützt zwar keine berechneten Indices (soweit ich das weiß), aber doch zusammengestellte mit Teilfeldlängen.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      MySQL unterstützt zwar keine berechneten Indices (soweit ich das weiß), aber doch zusammengestellte mit Teilfeldlängen.

      Andere DBMS sollten das auch können!

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
    2. echo $begrüßung;

      wenn ich das richtig sehe, benötigst Du keine extra Spalte für diesen "Matchcode", sondern kannst Dir direkt einen Kombinations-Index bauen, in den nur die angegebene Anzahl Zeichen eingeht:

      Ein Index ist nicht abfragbar. Er ist nur für das Finden von Datensätzen wichtig. Der Matchcode, scheint mir jedoch, soll eine andere Aufgabe erfüllen, zumal er auch in einer anderen Tabelle auftauchen soll als die ihm zugrunde liegenden Daten. Ein tabellenübergreifender Index ist meines Wissens unter MySQL nicht möglich.

      Bei der Abfrage einen Join einzurichten und dann den Matchcode zu berechnen ist eine Methode, die keinen zusätzlichen Speicher und Pflegeaufwand benötigt. Allerdings kann es andere Gründe haben, auf Joins verzichten zu wollen (Performance beispielsweise). Dann wäre Vinzenz Trigger-Vorschlag auch mein Favorit.

      MySQL unterstützt zwar keine berechneten Indices (soweit ich das weiß), aber doch zusammengestellte mit Teilfeldlängen.

      Unter dBase wäre das möglich gewesen, da konnte man auch Funktionen in die Indexbildung einbeziehen.

      echo "$verabschiedung $name";

      1. Hello,

        MySQL unterstützt zwar keine berechneten Indices (soweit ich das weiß), aber doch zusammengestellte mit Teilfeldlängen.

        Unter dBase wäre das möglich gewesen, da konnte man auch Funktionen in die Indexbildung einbeziehen.

        Genau. Das fand ich gar nicht so blöd!

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de