Thema: SQL Update

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: SQL Update

  Alt 26. Aug 2007, 08:59
Hallo Tau,

du hast deine Tabellen nicht korrekt normalisiert und jetzt versuchst du die abweichenden Länderzuordnungen in den Adressdaten und deiner Ortetabelle auf der Basis der Adressdaten zu synchronisieren. Das wirst du wegen der fehlenden Normalisierung wahrscheinlich immer wieder tun müssen.

So sehen deine Tabellen momentan aus:

adressdaten (id, ort, land, ...)
land (id, land, ...)
ort (id, plz, ort, land_id, ...)

Offensichtlich glaubst du den Adressdaten mehr als der Ortetabelle, also müsstest du konsequenterweise den Fremdschlüssel LAND_ID aus der Tabelle ORT entfernen.

Deine Synchronisierung funktioniert so:

SQL-Code:
update ort
set land_id = (select land from adressdaten where ort.id = ort)
where id in (select ort from adressdaten)
Warum du die Fehlerbehebung auf den Länderschlüssel 6 beschränken möchtest verstehe ich nicht.

Noch ein Tipp: Wenn du dein Datenmodell aus einem E/R-Modell ableitest, dann werden aus den Entitäten ORT, ADRESSE und LAND (Singular) die Tabellen ORTE, ADRESSEN und LAENDER (Plural). Vorteilhaft ist dann noch eine Namenskonvention für Fremdschlüssel. Ich verwende da die Form TABLE_ID. In deinem Datenmodell findet man ORT.ORT als Ortsname, bei mir würde das Attribut NAME der Entität ORT zum Feld NAME der Tabelle ORTE. Dein Datenmodell sähe bei mir dann so aus:

adressen (id, orte_id, laender_id, ...)
laender (id, name, ...)
orte (id, plz, name, ...)

Grüße vom marabu
  Mit Zitat antworten Zitat