Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Select Probleme mit Summieren (https://www.delphipraxis.net/90910-select-probleme-mit-summieren.html)

Tau 25. Apr 2007 23:16

Datenbank: MySQL • Version: 4.1.20 • Zugriff über: php

Select Probleme mit Summieren
 
Hallo Zusammen

Ich habe ein kleines Problem mit einer Abfrage

ich habe zwei Tabelle die so aufgebaut sind.

Tabelle: Spieler
id, vorname, nachname, land

1, Hans, Muzel, Deutschland
2, Josef, Burtscher, Schweiz
3, Wolfgang, Müller, Österreich
4, Ernst, Stark, Deutschland
usw.

Tabelle: Gewinner
id, turnier_nr, datum, spieler_id, plazierung, punkte

1, 2007-1, 10.04.2007, 1, 1, 100
2, 2007-1, 10.04.2007, 2, 2, 90
3, 2007-1, 10.04.2007, 3, 3, 80
4, 2007-1, 10.04.2007, 4, 4, 70
5, 2007-1, 10.04.2007, 5, 5, 60
6, 2007-1, 10.04.2007, 6, 6, 50
7, 2007-1, 10.04.2007, 7, 7, 40
8, 2007-1, 10.04.2007, 8, 8, 30
9, 2007-1, 10.04.2007, 9, 9, 20
10, 2007-1, 10.04.2007, 10, 10, 10

11, 2007-2, 12.04.2007, 5, 1, 100
12, 2007-2, 12.04.2007, 4, 2, 90
13, 2007-2, 12.04.2007, 12, 3, 80
14, 2007-2, 12.04.2007, 3, 4, 70
15, 2007-2, 12.04.2007, 1, 5, 60
16, 2007-2, 12.04.2007, 8, 6, 50
17, 2007-2, 12.04.2007, 14, 7, 40
18, 2007-2, 12.04.2007, 20, 8, 30
19, 2007-2, 12.04.2007, 21, 9, 20
20, 2007-2, 12.04.2007, 15, 10, 10
usw.

wie bekomme ich das folgende Ergebnis her

alle Spieler Namen mit der gesamt Anzahl der Punkte

Ergebnis Tabelle:
Spieler Name, Land, gesamt Punkte

Gruss
Tau

omata 25. Apr 2007 23:21

Re: Select Probleme mit Summieren
 
Hallo Tau,

vielleicht so...
SQL-Code:
SELECT vorname, nachname, land, gesamtPunkte
FROM spieler s
LEFT JOIN (SELECT id, SUM(punkte) gesamtPunkte
           FROM gewinner
           GROUP BY id) g
  ON s.id = g.id
Gruss
Thorsten

Tau 26. Apr 2007 00:01

Re: Select Probleme mit Summieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Thorsten

Danke für deine Schnelle Antwort

leider ist das Ergebnis mit den gesamtPunkte falsch.
Es wird keine Summe der Punkte gebildet.

vorname nachname land gesamtPunkte
1 Vorname 1 Nachname Deutschland 100
2 Vorname 2 Nachname Deutschland 90
3 Vorname 3 Nachname Österreich 80
4 Vorname 4 Nachname Deutschland 70
5 Vorname 5 Nachname Österreich 60
6 Vorname 6 Nachname Deutschland 50
7 Vorname 7 Nachname Österreich 40
8 Vorname 8 Nachname Deutschland 30
9 Vorname 9 Nachname Österreich 20
10 Vorname 10 Nachname Deutschland 10

ich habe eine Text Datei mit Demo Daten beigefügt

Gruss
Tau

omata 26. Apr 2007 00:04

Re: Select Probleme mit Summieren
 
Ok, ich habe wohl die falsche Spalte in Gewinner genommen...

SQL-Code:
SELECT vorname, nachname, land, gesamtPunkte
FROM spieler s
LEFT JOIN (SELECT spieler_id, SUM(punkte) gesamtPunkte
           FROM gewinner
           GROUP BY spieler_id) g
  ON s.id = g.spieler_id
Gruss
Thorsten

Hansa 26. Apr 2007 00:09

Re: Select Probleme mit Summieren
 
Bei Omata ist von einem WHERE nichts zu sehen. Packe das doch gleich in eine SP.

SQL-Code:
CREATE PROCEDURE ERMITTLE_SUMME (
    ID_SPIELER integer)
returns (
    NAME,
    GESPUNKTE integer)
as
BEGIN
FOR
  SELECT NAME, SUM (PUNKTE) AS GESPUNKTE FROM TABLEX
  WHERE (ID_SPIELER=:ID_SPIELER) ORDER BY NAME GROUP BY GESPUNKTE
DO
  SUSPEND;
END^
Die Datenmenge wäre dann da und könnte verarbeitet werden. Ungetestet, nur eingetippt ! Auch Syntax.

omata 26. Apr 2007 00:12

Re: Select Probleme mit Summieren
 
Hallo Hansa,

wieso muss man für so eine einfach Abfrage eine SP bauen? Und wozu wird ein WHERE benötigt?

Verwirrte Grüsse
Thorsten

Tau 26. Apr 2007 00:14

Re: Select Probleme mit Summieren
 
Hallo Thorsten


Danke Funktioniert :witch: :dancer2: :dancer:

schöne Grüsse
Tau

Hansa 26. Apr 2007 00:32

Re: Select Probleme mit Summieren
 
Zitat:

Zitat von omata
wieso muss man für so eine einfach Abfrage eine SP bauen? Und wozu wird ein WHERE benötigt?

Verwirrte Grüsse

Das ist ein Vorschlag, um die Sache aufzusplitten und übersichtlicher zu machen, mehr nicht. Vielfach wird übersehen, dass eine SP in der DB etwas anderes ist, als in Delphi. Die liefert auf Wunsch eine Ergebnismenge zurück. Nicht nur einen Wert. Ich kann also schnell mal z.B. nach Punkten sortieren usw. Man lässt doch nicht die DB irgendwas zusammenwürfeln und bemüht dann Bubblesort. :mrgreen:

mkinzler 26. Apr 2007 06:32

Re: Select Probleme mit Summieren
 
Allerdings wird ihm eine IB/FB-SP bei MySQL wenig nützen.

Jelly 26. Apr 2007 06:40

Re: Select Probleme mit Summieren
 
@Omata,

Wieso Subselects bemühen.
SQL-Code:
select s.vorname, s.nachname, s.land, sum(g.punkte) as gesamtPunkte
from spieler s left join gewinner g on s.id = g.spieler_id
group by s.vorname, s.nachname, s.land
Subselects sind nicht indiziert und somit in der Regel langsamer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz