Vinzenz Mai: update + select

Beitrag lesen

Hallo Nina,

hab tab1.feld1 und tab2.tab1_feld1, welche für entsprechende einträge gleich sind.

sich vermute daher, dass in Tabelle tab1 die Spalte feld1 Träger des Primärschlüssels ist und in Tabelle tab2 Fremdschlüssel ist. Wenn Dir diese Begriffe nichts sagen, frage bitte nach.

in tab1 ist ein feld für tab2.tab2_feldx vorgesehen.

Warum? Das sieht definitiv nach einem fehlerhaften Tabellendesign aus. Es gibt im wesentlichen folgende Möglichkeiten:

a) Jedem Datensatz aus Tabelle tab1 können ein oder kein Datensatz in Tabelle
   tab2 zugeordnet sein, jedem Datensatz aus Tabelle tab2 ist genau ein
   Datensatz aus Tabelle tab1 zugeordnet. 1:1-Beziehung zwischen tab1 und tab2

b) Jedem Datensatz aus Tabelle tab1 können kein, ein oder mehrere Datensätze
   in Tabelle tab2 zugeordnet sein, jedem Datensatz aus Tabelle tab2 ist
   genau ein Datensatz aus Tabelle tab1 zugeordnet. 1:n-Beziehung zwischen
   tab1 und tab2

c) Jedem Datensatz aus Tabelle tab2 können ein oder kein Datensatz in Tabelle
   tab1 zugeordnet sein, jedem Datensatz aus Tabelle tab1 ist genau ein
   Datensatz aus Tabelle tab2 zugeordnet. 1:1-Beziehung zwischen tab2 und tab1

d) Jedem Datensatz aus Tabelle tab2 können kein, ein oder mehrere Datensätze
   in Tabelle tab1 zugeordnet sein, jedem Datensatz aus Tabelle tab1 ist
   genau ein Datensatz aus Tabelle tab2 zugeordnet. 1:n-Beziehung zwischen
   tab2 und tab1

e) Jedem Datensatz aus Tabelle tab1 können mehrere Datensätze aus Tabelle
   tab2 zugeordnet sein. Jedem Datensatz aus Tabelle tab2 können mehrere
   Datensätze aus Tabelle tab1 zugeordnet sein. n:m-Beziehung zwischen
   Tabelle tab1 und tab2.

Umsetzung in der Datenbank

a) und b) Primärschlüssel aus tab1 ist Fremdschlüssel in tab2
c) und d) Primärschlüssel aus tab2 ist Fremdschlüssel in tab1
e) Verwende eine Zuordnungstabelle, in der die Primärschlüssel aus
   tab1 und tab2 als Fremdschlüssel auftreten.

Im Normalfall ist es nie erforderlich, dass eine solche Doppelabhängigkeit vorliegt, wie Du sie erzeugen möchtest. Könntest Du bitte anhand Deiner tatsächlich vorliegenden Tabellen erläutern, was Du erreichen möchtest. Dann kann man Dir wesentlich besser helfen. Bitte gib' auch noch das von Dir verwendete Datenbankmanagementsystem (DBMS) an, z.B. MySQL, PostgreSQL, MS SQL Server, Oracle, DB2, SQLite, MS Access, Firebird, ... Die unterschiedlichen DBMS weisen unterschiedliche Fähigkeiten auf, insbesondere bei MySQL unterscheidet sich die Funktionalität enorm zwischen verschiedenen Versionen, so dass es grundsätzlich eine gute Idee ist, die verwendete Version mit anzugeben.

Freundliche Grüße

Vinzenz