Automatische Rückverknüpfung
Ich habe folgenden Wunsch. Ich habe in einer N:N Tabelle die einzelnen Beziehungen von Familienmitgliedern verknüpft. Nun möchte ich bei Erstellen einer Beziehung automatisch einen neuen Datensatz zum "Gegenteil" erstellen. Name 1 ist Ehemann zu Name 2 -> neuer Datensatz -> Name 2 ist Ehefrau zu Name 1) ... Datenmodell Tabelle "Person" und N:N Tabelle "Beziehung" Freue mich über eine Lösung ... ich hab da nen Knoten im Kopf ...
3 Antworten
-
Moin ... habe doch noch selbst gebastelt und ein Grundgerüst erstellt, was funktioniert .... mit Ausnahme der switch Funktion .... hier wird die Variable nicht verändert ... komm nicht drauf, warum .... mit einer if-Anweisung klappt es, aber die dürfte später zu umständlich sein, wenn es mehr Fälle zu vergleichen gibt.... Hoffe, jemand findet meinen Fehler ...
let a := personA;
let b := personB;
let aGender := personA.gender;
let r := relationship;
let test := cnt(select 'n:relationship' where personA = b and personB = a);
if test = 0 then
if dialog("new relationship", "do you want to add a new relationship", ["yes", "no"]) = "yes" then
let new := (create 'n:relationship');
new.(personA := b);
new.(personB := a);
new.(relationship := 0);
let newR := 0;
switch newR do
case aGender = 1: 1
case aGender = 2: 2
end;
new.(relationship := newR)
end
else
alert("record already exist!!!")
end -
Problem gelöst .... endlich verstanden, wie sitch funktioniert ;)
let a := personA;
let b := personB;
let aGender := personA.gender;
let r := relationship;
let test := cnt(select 'n:relationship' where personA = b and personB = a);
if test = 0 then
if dialog("new relationship", "do you want to add a new relationship", ["yes", "no"]) = "yes" then
let new := (create 'n:relationship');
new.(personA := b);
new.(personB := a);
let newR := switch aGender do
case 1:
1
case 2:
2
end;
new.(relationship := newR)
end
else
alert("record already exist!!!")
end -
hier das getestete Update
let a := personA;
let b := personB;
let aGender := personA.gender;
let bRelation := relationship;
let newR := 0;
let test := cnt(select 'n:relationship' where personA = b and personB = a);
if test = 0 then
if dialog("new relationship", "do you want to add the backward relationship?", ["yes", "no"]) = "yes" then
let new := (create 'n:relationship');
new.(personA := b);
new.(personB := a);
if aGender = 1 then
newR := switch bRelation do
case 1:
1
case 2:
1
case 3:
5
case 4:
5
case 5:
3
case 6:
3
end
else
newR := switch bRelation do
case 1:
2
case 2:
2
case 3:
6
case 4:
6
case 5:
4
case 6:
4
end
end;
new.(relationship := newR)
end
else
alert("record alreday exist!!!")
end
Content aside
- vor 4 JahrenZuletzt aktiv
- 3Antworten
- 925Ansichten