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 aus dieser Tabelle ?

Begonnen von Hellfire3004, Mai 21, 2013, 16:12:44

⏪ vorheriges - nächstes ⏩

Hellfire3004

Hallo erstmal,

wie erstelle ich eine Abfrage für einen Spieler (hier : Berti), in der die komplette Tabelle durchsucht werden soll, und nur die Punkte für Berti addiert werden ? Diese sollen dann in eine neue Tabelle "Berti" angefügt werden.

Bisher hab ich das so geregelt, dass ich für die Tabelle "Final Table Ergebnisse" (Platz 1 - 9) jeweils für Unikate 9 Abfragen habe und für Duplikate auch 9 Abfragen. So ermittle ich Name und Datum, die dann an die Spieler-Tabelle angefügt werden. Im Anschluss folgen nochmal pro Spieler je 9 Anfüge-Abfragen für die Platzierung, bei welcher die Punkte ermittelt werden und in die Spieler-Tabelle angefügt werden.

Bei nun mittlerweile über 400 Spielern erscheint mir mein Verfahren etwas zu aufwendig...das geht bestimmt einfacher ?

Die Endtabelle sollte in etwa so aussehen (soll alles anhand der eingegebenen Ergebnisse automatisch ermittelt werden):

Platzierung           Spielername             Punkte
1                         XYZ                          140,5
2                         FGH                          139
.                          ...                             ...
.                          ...                             ...

Ich hoffe, es ist verständlich, im Anhang die Tabelle 'Final Table Ergebnisse', aus der die Daten berechnet werden sollen.
Vielen Dank schonmal im Voraus

[Anhang gelöscht durch Administrator]

MzKlMu

Hallo,
eine über die Spieler gruppierte Abfrage liefert für jeden Spieler automatisch dessen Gesamtpunkte. Diese Abfrage kannst Du nach Namen filtern.
ZitatDiese sollen dann in eine neue Tabelle "Berti" angefügt werden.
Für jeden Spieler eine eigene Tabelle halte ich für den falschen Weg.
Die beschriebene Abfrage reicht aus.
Gruß Klaus

Hellfire3004

Zitateine über die Spieler gruppierte Abfrage liefert für jeden Spieler automatisch dessen Gesamtpunkte.

Wie wird die Abrage genau gemacht ? Hab da schon Stunden davorgesessen und probiert, aber ich komme nicht auf den richtigen Ansatz  :-\

69bruno

Nach der Art  Deiner Fragestellung gehe ich davon aus, dass Du stundenlang vor dem Abfragegenerator gesessen hast........ und nicht versucht hast, einen SQL-String zu basteln........

Und wenn man vor dem Abfragegenerator sitzt, gibt es da eine "Funktion" für jedes Abfragefeld. Die sieht man aber standardmäßig nicht. Da muss man auf "Ansicht" und dann auf "Funktionen" gehen, dann sieht man die.

Wenn Du jetzt beim Abfragefeld mit dem Spielernamen auf "Gruppierung" bleibst, die Platzierung überhaupt nicht drin hast oder nur als "Bedingung" nimmst und bei den Punkten auf "Summe" wechselst, bist Du fertig.  ::)
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

Hellfire3004

Wenn ich eine neue Abfrage erstelle, finde ich unter "Ansicht" keine "Funktion" ... Es gibt nur Datenblatt-Ansicht, 2 x Pivot-Ansichten, SQL-Ansicht und Entwurfs-Ansicht  ???

herb3472

Das, was Du brauchst, ist meines Erachtens hier ganz gut und leicht verständlich beschrieben:

http://office.microsoft.com/de-at/access-help/summieren-von-daten-unter-verwendung-einer-abfrage-HA010096310.aspx

In der Entwurfsansicht Deiner Abfrage positionierst Du den Mauszeiger auf ein (möglichst leeres) Feld der Feldliste (am unteren Bildrand). Wenn Du dann mit der rechten Maustaste draufklickst, öffnet sich ein Kontextmenü.

Der für Dich interessante Menüpunkt ist der oberste Menüpunkt "Summen". Klick da drauf - damit kannst Du Deine Abfrage in eine Gruppierungsabfrage umwandeln (und auch wieder zurückwandeln) und in weiterer Folge aus den Tabellenwerten Summen, Mittelwerte, Anzahl, erste und letzte Werte etc. errechnen lassen.

Gutes Gelingen

Herb

69bruno

Siehe Anhang.

Nicht Schaltfläche Ansicht, Menu Ansicht

[Anhang gelöscht durch Administrator]
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

Hellfire3004

Erstmal Danke für die hilfreichen Antworten, ich bin dadurch schon einen Schritt weitergekommen  ;)

Es funktioniert aber leider nur zum Teil ...
Wenn ich bei der Abfrage (Anhang Abfrage1) das so eingebe, erhalte ich wie gewünscht,
nur die Ergebnisse von Berti (Anhang Ergebnis1) für Platz 1  ;D Soweit, so gut  :D

Wenn ich das erweitere auf Platz 2, erhalte ich leider gar keine Ergebnisse mehr (Anhang: Ergebnis2)

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

die Sache leidet an der fehlenden Normalisierung.


Gruppierungen über Felder in einem Datensatz sind nicht möglich. Gruppiert werden können nur Werte in Spalten einer Tabelle.

Hellfire3004

Und wie löse ich das Problem ?

DF6GL

Hallo,

indem die Tabellen entspr. den Normalisierungsregeln (siehe u. st. Links 1 und 1a)  aufgebaut und entspr. den Datenverhältnissen in Beziehung zueinander gesetzt werden..

Hellfire3004

Und genau dafür bräuchte ich speziell für meine Datenbank eure Hilfe  :-\

Allgemein versteh ich das Prinzip ja, aber irgendwie kapier ich nicht, wie ich das auf meine Datenbank anwenden soll  :(

69bruno

Na auf jeden Fall schonmal, kann die Platzierung nicht so bleiben.
Stell Dir mal vor, die DB wird größer und größer und plötzlich gibt es mehr Spieler und destowegen auch mehr Plätze.......
Dann musst Du plötzlich anbauen, denn Du konntest ja nicht hellsehen.

Du brauchst eine Tabelle mit dem Turnierdatum und einem Primärschlüssel (Autowert). (Ich gehe mal davon aus, dass es sogar zwei Turniere an einem Tag geben kann, deswegen nicht das Datum als Schlüssel.)
Dann eine Tabelle für die Turnierteilnehmer, die ein Referenzfeld zur Turnier-ID hat, den Namen und einen Autowertschlüssel.( Auch Namen können doppelt vorkommen, daher ein extra Schlüsselfeld)
Dann brauchst Du noch eine Tabelle mit den Ergebnissen. Diese hat dann zwei Referenzfelder, einmal zum Turnier und dann noch zu den Teilnehmern. Dazu kommen noch zwei Felder nämlich Platz und Punkte.

Und wenn Du die vernünftig in Beziehung setzt, dann kannst Du mit einer Abfrage alles rauskriegen, was du brauchst.
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

Hellfire3004

#13
Zitat von: 69bruno am Mai 23, 2013, 11:14:52
Stell Dir mal vor, die DB wird größer und größer und plötzlich gibt es mehr Spieler und destowegen auch mehr Plätze.......
Es sind bereits mehr als 400 Spieler(Tabelle 'Namensliste' mit AutoWert als Primärschlüssel), aber nur die ersten 9 Plätze pro Turnier bekommen eine Punktewertung.

ZitatIch gehe mal davon aus, dass es sogar zwei Turniere an einem Tag geben kann
Nein, immer nur 1 Turnier.

ZitatDann brauchst Du noch eine Tabelle mit den Ergebnissen. Diese hat dann zwei Referenzfelder, einmal zum Turnier und dann noch zu den Teilnehmern. Dazu kommen noch zwei Felder nämlich Platz und Punkte
Wie ich das sehe, ist das genau meine Tabelle 'Final Table Ergebnisse'
Referenzfelder = Turnierdatum & Platz 1 ... Dazu noch ein Feld Punkte

Vielleicht hakts nur an den Beziehungen ?

MzKlMu

Hallo,
ZitatWie ich das sehe, ist das genau meine Tabelle 'Final Table Ergebnisse'
Nein, ist es nicht, denn die Tabelle ist nicht normalisiert.
Die Ergebnisse dürfen nicht nebeneinander stehen, sondern untereinander.

Etwas so:
ErgebnisID      TurnierId     SpielerID       Punkte   Platz
     1               1            1            200      3
     2               1            2            300      1

usw.

Für jeden Spieler wiederholt sich die Zeile mit der gleichen TurnierID aber einer unterschiedlichen SpielerID.
Gruß Klaus