Datensätze zusammenführen
Moin zusammen.
Ich arbeite als Fotograf im Bereich Motorsport - Bahnsport -Speedway.
Bisher habe ich meine Fotos in einer Exceltabelle organisiert und gesichert. Über die letzten Jahre sind so ca. 4.000 (Zeilen-) entstanden.
Eine Zeile ist zusätzlich in Spalten ungefähr (Kurzform) so organisiert:
Nachname | Vorname |Veranstaltung | Jahr
Muster | Heinz | Tolles Rennen|2016
Muster | Heinz | Dummes Rennen|2018
Muster | Heinz | Regenrennen|2016
Muster | Heinz | Bergrennen|2017
Muster | Heinz | Speedway|2016
Pilot|Peter|Tolles Rennen|2016
Pilot | Peter | Dummes Rennen|2018
Pilot | Peter | Regenrennen|2016
Formel | Frank | Bergrennen|2017
Formel | Frank | Speedway|2016
Die csv habe ich nun in Ninox importiert. Nun versuche ich die Datensätze der Zeilen seit Tagen zusammenzuführen. Mein Ziel ist:
Ich möchte Muster (Name) eingeben und alle Rennen vom Heinz Muster sollen dann bei ihm in der dann aufgehenden Anzeige erscheinen und nicht wie jetzt in der Tabelle x-mal der Name Muster untereinander stehend
Beispiel Bild:
Dann hätte ich zu dem Fahrer alle seien Rennen im Überblick. Ich könnte dann noch einen Link zu den Bilder anbringen und wäre TOP für unterwegs bei den Rennveranstaltungen organisiert. Desweitern wäre es auch ein Ziele z.B. die Veranstaltung anzuklicken und die Datenbank würde mir sagen bei dem „Tolles Rennen“ waren Fahrer x,y,z am Start. In der Excel oder in der Grundtabelle könnte ich es ja, aber wie in der Ansicht?
Ich probiere seit Tagen mit Untertabelle, mit Verknüpfungen..aber eine richtige Lösung finde ich nicht. Ich könnte ja mehre Verknüpfungen legen, aber das ist „wie gewollt aber nicht gekonnt“.
Hat einer von den Lesern hier einen Ratschlag/Tipp wie man es lösen könnte?
Herzlichen Dank
Holger
7 Antworten
-
Sorry, ich sehe erst jetzt, das ich es in das falsche Forum gepostet habe. Bitte in das entsprechende Forum verschieben. Danke!
-
Ich dachte eigentlich, das sei relativ einfach. Pustekuchen. Meine Idee war folgende:
Tabelle FAHRER:
- Nachname (Textfeld)
- Vorname (Textfeld)
- Veranstaltungen (1:N-Verknüpfung mit TEILNEHMER)Tabelle VERANSTALTUNGEN:
- Bezeichnung (Textfeld)
- Jahr (Textfeld)
- Teilnehmer (1:N-Verknüpfung mit TEILNEHMER)Tabelle TEILNEHMER (Untertabelle von VERANSTALTUNGEN)
- Fahrer (N:1-Verknüpfung mit FAHRER)
- Veranstaltungen (N:1-Verknüpfung mit VERANSTALTUNGEN)Tabelle XIMPORT (bereits vorhanden):
- Nachname (Textfeld)
- Vorname (Textfeld)
- Veranstaltung (Textfeld)
- Jahr (Textfeld)
- [...]Nun dachte ich, die Tabelle mit den bereits importierten Daten (IMPORT) um eine Schaltfläche zu ergänzen, welche die Tabelle einmal Satz für Satz durchgeht und die Inhalte auf die anderen Tabellen verteilt. Danach hätte man die IMPORT-Tabelle mitsamt der Schaltfläche löschen können.
Soweit der Plan. Und hier der dazugehörige Schaltflächen-Code:
for INr in select XImport do
let FNr := first(select Fahrer where Nachname = INr.Nachname);
if FNr = null then
let FNr := (create Fahrer);
FNr.(Nachname := INr.Nachname);
FNr.(Vorname := INr.Vorname)
end;
let VNr := first(select Veranstaltungen where Bezeichnung = INr.Veranstaltung);
if VNr = null then
let VNr := (create Veranstaltungen);
VNr.(Bezeichnung := INr.Veranstaltung);
VNr.(Jahr := INr.Jahr)
end;
let TNr := (create Teilnehmer);
TNr.(Fahrer := FNr);
TNr.(Veranstaltungen := VNr)
end
Ergebnis:
Zwar werden die Datensätze für Fahrer und Veranstaltungen angelegt, allerdings schon in seltsamer Reihenfolge. Und die Zuordnungen in der Untertabelle TEILNEHMER sind ein totales Mysterium (siehe Screenshot). Natürlich habe ich noch die eine oder andere Syntax- und Format-Variante probiert, aber geholfen hat es nichts.
Kurzum: Ich bin offenbar mal wieder zu blöd und sehe einfach den Fehler nicht. Hat jemand eine Idee, was da schief läuft?
-
Der Vollständigkeit halber auch noch die Ausgangstabelle mit dem importierten Daten (hatte ich nach den ersten Fehlversuchen genauso angelegt wie oben vom Fragesteller angegeben):
-
Hallo Holger,
Es ist ein bisschen kompliziert. Nehmen wir an, die Rennen haben festen Namen und wiederholren sich periodisch (z.B. Regenrennen gibt es nicht nur 2016 sondern auch 2017 und 2018). Dann macht es Sinn eine Tabelle Rennen mit Rennennamen und noch eine Tabelle Veranstaltungen zu erstellen, wo das Rennen als Verknüpfung existiert und das Jahr als Zahlenfeld. Jetzt brauchen wir noch die Tabele mit den Fahrer. Nennen wir diese Personen und fügen dort Felder Vorname und Nachname . Was uns noch fehlt, ist die Bezieung zu deiner Hapttabelle mit Fotos. Ich nenne diese Tabelle mal Fotos. Im einfachsten Fall gehöhrt zu jedem Datensatz (Zeile) nur eine Veranstaltung und nur eine Person. Dann Fügen wir zu der Tabelle Fotos die Verknüpfungen zu den Tabellen Personen und Veranstaltungen. Am Ende sollte das Datenmodell etwa so aussehen:
Jetzt haben wir unser Datenmodell und müssen alle Datensätze zuordnen. Dafür kann man einen Button in der Tabelle Fotos einbauen. Die Formel ist ein bisschen kompliziert:
---
"
/mit unique() werden eindeutige Kontakte identifieziert, neue Datensätze in der Tabelle Personen angelegt und die Datensätze mit der Tabelle Fotos verknüpft/
";
let myUN := unique((select Fotos).(Vorname + "," + Nachname));
for ii in myUN do
let myAR := split(ii, ",");
let newP := (create Personen);
newP.(Vorname := item(myAR, 0));
newP.(Nachname := item(myAR, 1));
(select Fotos)[Vorname = newP.Vorname and Nachname = newP.Nachname].(Personen := newP)
end;
"
/jetzt werden die eindeutige Rennennamen identifieziert und die Tabelle Rennen befüllt/
";
let myUN := unique((select Fotos).Veranstaltung);
for ii in myUN do
let newP := (create Rennen);
newP.(Rennenname := ii)
end;
"
/jetzt werden die Veranstaltungen nach Jahren analysiert, neue Datensätze erstellt und verknüpt/
";
let myUN := unique((select Fotos).(Jahr + "," + Veranstaltung));
for ii in myUN do
let myAR := split(ii, ",");
let newP := (create Veranstaltungen);
newP.(Jahr := item(myAR, 0));
newP.(Rennen := first((select Rennen)[Rennenname = item(myAR, 1)]));
(select Fotos)[Jahr = newP.Jahr and Veranstaltung = newP.Rennen.Rennenname].(Veranstaltungen := newP)
end---
Damit es leichter wird zu verstehen, wie das ganze funktioniert, habe ich ein Beispiel hier:
https://www.dropbox.com/s/vu7cy3xzlhihbp2/Zuordnungen.ninox?dl=0
Hier kann man bei der Tabelle Fotos die Daten zuordnen und wieder löschen.
Leo
-
Oh, jetzt war ich zu spät ;-(
-
Nee, du kommst genau richtig. ;) Mein Lösungsansatz funktioniert ja nicht.
-
Hallo zusammen.
Herzlichen Dank für die umfangreiche Hilfe und die vielen Anregungen. Das eröffnet mir gerade eh neue Gedankengänge.
Die chaotische Zusammenstellung der Exceldatei rührte daher, da ich vor 6 Jahren mit dem Wissen damals etwa schaffen wollte, um die Fotos schnell zu den Fahrernzu zuordnen. Dann habe ich lange nach einer Möglichkeit einer Datenbank gesucht und ich denke ich bin nun fündig geworden. Ich habe mir jetzt schon einige kleine DB auf dem Mac Book für unterwegs gebaut, das mit den Fotos habe ich etwas aufgehoben, weil ich mich irgendwie nicht daran getraut habe. Nun denke ich aber, habe ich die Lösung und die Fleißarbeit kann beginnen.
Also noch einmal einen Herzlichen Dank!
VG
Holger
Content aside
- vor 6 JahrenZuletzt aktiv
- 7Antworten
- 2872Ansichten