Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage ohne Update

Begonnen von Bohnsopp, Dezember 19, 2016, 12:17:36

⏪ vorheriges - nächstes ⏩

Bohnsopp

Hallo,
ich habe eine Datenbank aufgebaut in der über eine Einstellungstabelle (tblEinstellung) mehrere Wettkämpfe definiert werden können.
Nun habe ich eine Tabelle (tblTeilnehmer) mit den Teilnehmern wo Daten wie Name, Geburtsdatum, etc. drinstehen, und eine Tabelle mit den Ergebnissen für die Wettkämpfe (tblWettkampf).
Was ich brauche ist eine Abfrage die mir folgendes auflistet:
TeilnehmerID, Teilnehmername, WettkampfID, Wettkampfnahme,  Wettkampfergebnis.
Die Zusammenfügung aus tblTeilnehmer und tblWettkampf verstehe ich und kann diese über ein RIGHT JOIN bzw. LEFT JOIN so verknüpfen.
Was mir jetzt fehlt ist, dass in der Abfrage auch schon die WettkampfIDs so verknüpft sind, dass diese beim Anfügen neuer Teilnehmer sofort angezeit werden, also
TeilnehmerID, Teilnehmername, WettkampfID, Wettkampfnahme,  Wettkampfergebnis
1 Max Mustermann, 1, Fechten, noch keins
2 Micky Mouse, 1, Fechten, noch keins
1 Max Mustermann, 2, Turmspringen, noch keins
2 Micky Mouse, 2, Turmspringen, noch keins

Welche Verknüpfungsart muss ich hier wählen?
Alternativ könnte ich das auch als Anfüge-Abfrage lösen, aber die Frage ist geht das auch in einer Abfrage? Zumal ich denke dass bei einer Anfüg-Abfrage dann auch eine Aktualisieren- und Lösch-Abfrage notwendig wird, falls ein Teilnehmer gelöscht wird oder einfach nur mal sein Name falsch geschrieben wurde.

Gruß

DF6GL

Hallo,


befürchte, Du bist etwas auf Irrwegen....


Vor Abfragen und Auswertungen ist die Tabellenstruktur zu normalisieren (und damit auch Beziehungen mit ref. Integrität zu definieren).

als minimale Konfiguration:


tbl_Wettkämpfe
WKID  (PK, Autowert)
WK_Name  (Text)
.
.


tbl_Teilnehmer
TNID (PK, Autowert)
TN_Vorname (text)
TN_Nachname (Text)
TN_Strasse (Text)
TN_PLZ (Text)
TN_Ort (Text)
.
.
.

tbl_TeilnehmerWettkämpfe
TWID  (PK, Autowert)
TW_TNID (FK, Long)
TW_WKID (FK, Long)
TW_Ergebnis (Long, bzw. Text)   ' je nachdem, was ein "Ergebnis" sein soll
.
.


Beziehungen mit ref. Integrität:

tbl_Teilnehmer  ---1:n---  tbl_TeilnehmerWettkämpfe   ---n:1---   tbl_Wettkämpfe

Left/Right-Joins sind zunächst außer acht zu lassen.


Danach für jede Tabelle ein Formular. Je nach Sichtweise ein Hauptform mit Basis zu tbl_Teilnehmer, das mit einem UFO_Steuerelement das Endlosform mit Basis zu tbl_TeilnehmerWettkämpfe  anzeigt.


ZitatWas mir jetzt fehlt ist, dass in der Abfrage auch schon die WettkampfIDs so verknüpft sind, dass diese beim Anfügen neuer Teilnehmer sofort angezeit werden,

Sowas brauchst Du nicht.  Die Auswahl (Zuordnung) eines Wettkampfes geschieht über ein Kombifeld im Endlosform "frm_TeilnehmerWettkämpfe".


Zitatfalls ein Teilnehmer gelöscht wird

Einmal gültige Teilnehmer werden nicht gelöscht, es wird lediglich ein gelöscht-Merkmal in der Tabelle geführt.

Zitateinfach nur mal sein Name falsch geschrieben wurde.

Das kann durch einfaches Korrigieren des Vor-/Nachnamens geschehen.  Ein Teilnehmer wird nur durch die ID (TNID) des Datensatzes definiert, nicht durch seinen Namen.

In dieser gesamten Konstellation sind keine besonderen Abfragen nötig, wenn man von den Datensatzherkünften der Kombifelder mal absieht. Auch die Datenherkünfte der Formulare können direkt auf den Tabellen basieren.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo,
Ich befürchte, dass es damit noch nicht getan ist. Vermutlich werden auch noch
Tabellen benötigt, die verschiedene Disziplinen ins Spiel bringen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Bohnsopp

Hallo,
ich habe jetzt erstmal die Tabelle nach DF6GL's Vorschlag aufgebaut. Das ganze ist auch erstmal nur eine Datenbank um mein Problem und den Lösungsansatz zu verstehen.

Wo ich mir noch nicht ganz sicher bin ist wie ich den Formularaufbau machen muss.
Ich habe erstmal ein Formular für die Teilnehmer. Soweit ok.
Dann will ich ein Formular (Datenblattansicht) haben in dem ich alle Teilnehmer für alle Diszpilinen habe und dann dort nur noch die Ergebnisse eintragen will. Jeder Teilnehmer soll grundsätzlich an jeder Wettkampfart teilnehmen (vgl. 10-Kampf).

Gruß,
Sascha

DF6GL

Hallo,

eigentlich ist so ein Vorgehen eher nicht datenbank-gerecht. Da drückt Excel durch...


Wie auch immer, fülle mit einer Kreuzprodukt-Anfügeabfrage die Tabelle  tbl_TeilnehmerWettkämpfe , um jeden Teilnehmer zu jedem Wettkampf zuzuordnen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access