Suchen
Inside Forum
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > Datenbanken > Datenbanken

Datenbanken Alles rund um MySQL, MariaDB, PostgreSQL o.ä. und die NoSQL-Datenbanken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10.02.2018, 02:11
TheBearded TheBearded ist offline
Besucher
 
Registriert seit: 01.10.2004
Ort: Heidelberg
Beiträge: 56
Standard Jeweils höchstes Ergebnis einer Gruppe von Ergebnissen auswählen

Hallo,

ich bastle grade eine kleine Anwendung, die die Ergebnisse von Kartenspiel-Runden (Doppelkopf) in einer Tabelle protokolliert.

Die zugehörige Tabelle hat eine Zeile pro Spiel, eine Runde kann mehrer Spiele enthalten. Es gibt also pro Zeile eine UNIQUE KEY-Spalte als laufende Nummer (AUTO_INCREMENT), eine Runden_ID und eine Spiel_ID (sowie die Ergebnisse für jeden Spieler pro Runde).

Also ungefähr so:

GUID | Runden_ID | Spiel_ID Erg_Sp1 | Erg_Sp2 usw.
1 | 1 | 1 | 4 | -1 | ...
2 | 1 | 2 | -2 | 2 | ...
3 | 2 | 1 | 1 | -3 | ...
4 | 2 | 2 | 3 | 2 | ...
5 | 3 | 1 | -2 | 4 | ...

Zur Darstellung der Ergebnisse würde ich gerne den jeweils letzten Stand einer Runde in einer zusammengefassten Liste anzeigen.

Ich suche also nach einem SQL-Statement, das mir in einer Liste pro Runde (Runden_ID) jeweils die Zeile mit der höchsten Spiel_ID ausgibt. Man muss allerdings berücksichtigen, dass es eine unterschiedliche Anzahl Zeilen mit der gleichen Runden-ID geben kann, und es gibt pro Runden-ID mindestens eine Zeile (und ich such immer die Zeile mit der höchsten Spiel-ID pro Runde).

Ich bin für jede Hilfe dankbar.

Danke & Gurß,
Ben
Mit Zitat antworten
  #2  
Alt 10.02.2018, 03:40
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.856
Standard AW: Jeweils höchstes Ergebnis einer Gruppe von Ergebnissen auswählen

Dann suchst du dir dafür erst die GUIDs raus und diese Verwendest du in einem JOIN oder subquery um dann die entsprechenden Zeilen rauszusuchen.
Also als Idee so:
SQL Quellcode:
SELECT ...
FROM tab
WHERE GUID IN (SELECT MAX(GUID) FROM tab GROUP BY Runden_ID)


Ich habe jetzt auf Spiel_ID verzichtet, da ich vermute, dass die GUID auch höher ist, wenn die Spiel_ID höher ist. Ansonsten musst du das eben einfach noch einbauen.

Lg Kasalop
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten
  #3  
Alt 10.02.2018, 12:04
akretschmer akretschmer ist gerade online
Engagierter Besucher
 
Registriert seit: 25.09.2013
Beiträge: 1.155
Standard AW: Jeweils höchstes Ergebnis einer Gruppe von Ergebnissen auswählen

Zitat:
Zitat von TheBearded Beitrag anzeigen

Also ungefähr so:

GUID | Runden_ID | Spiel_ID Erg_Sp1 | Erg_Sp2 usw.
Durchnummerierte Spalten sind bäh. Wie viele Spalten kommen da noch? Mir erscheint dieses Tabellendesign falsch.

Zitat:
Zur Darstellung der Ergebnisse würde ich gerne den jeweils letzten Stand einer Runde in einer zusammengefassten Liste anzeigen.

Ich suche also nach einem SQL-Statement, das mir in einer Liste pro Runde (Runden_ID) jeweils die Zeile mit der höchsten Spiel_ID ausgibt. Man muss allerdings berücksichtigen, dass es eine unterschiedliche Anzahl Zeilen mit der gleichen Runden-ID geben kann, und es gibt pro Runden-ID mindestens eine Zeile (und ich such immer die Zeile mit der höchsten Spiel-ID pro Runde).
Das klingt nach einer sinnvollen Anwendung von Window-Funktionen. Kann das Deine DB?
__________________
--
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Mit Zitat antworten
  #4  
Alt 10.02.2018, 13:57
protestix protestix ist offline
Engagierter Besucher
 
Registriert seit: 29.06.2016
Beiträge: 667
Standard AW: Jeweils höchstes Ergebnis einer Gruppe von Ergebnissen auswählen

Zitat:
Zitat von akretschmer Beitrag anzeigen
Durchnummerierte Spalten sind bäh. Wie viele Spalten kommen da noch?
Noch 2, Doppelkopf wir immer mit 4 Spielern gespielt.

Ich denke nicht, das es sich hier um eine ernsthafte Anwendung handelt, sondern eher um ein Spassprojekt um die Punkte der Spieler in einer DB zu hallen anstatt auf einem Zettel.

Von daher würde ich das hier mal nicht so eng sehen.
Mit Zitat antworten
  #5  
Alt 10.02.2018, 14:02
akretschmer akretschmer ist gerade online
Engagierter Besucher
 
Registriert seit: 25.09.2013
Beiträge: 1.155
Standard AW: Jeweils höchstes Ergebnis einer Gruppe von Ergebnissen auswählen

Zitat:
Zitat von protestix Beitrag anzeigen
Noch 2, Doppelkopf wir immer mit 4 Spielern gespielt.

Ich denke nicht, das es sich hier um eine ernsthafte Anwendung handelt, sondern eher um ein Spassprojekt um die Punkte der Spieler in einer DB zu hallen anstatt auf einem Zettel.

Von daher würde ich das hier mal nicht so eng sehen.
Ich bin mir nicht ganz sicher, vielleicht sind mehr als 4 beteiligt und einer schaut immer nur zu.
__________________
--
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL-Abfragen mit mehreren Ergebnissen einer verknüpften Tabelle cake4k Datenbanken 1 17.04.2013 18:35
Von mehreren Datensätzen jeweils einen auswählen Herr-Vorragend Datenbanken 3 03.04.2008 14:51
Abfrage einer Gruppe mit dem kleinsten Preis lifeloops2 Datenbanken 0 10.06.2007 11:30
mit Ergebnissen einer DB-Abfrage rechnen fire28 PHP 2 21.12.2006 15:56
Aus einer Gruppe Wert auslesen... Oliver Albers PHP 0 01.01.1970 01:00


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:37 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC