AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Select Probleme mit Summieren
Thema durchsuchen
Ansicht
Themen-Optionen

Select Probleme mit Summieren

Ein Thema von Tau · begonnen am 26. Apr 2007 · letzter Beitrag vom 26. Apr 2007
Antwort Antwort
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#1

Select Probleme mit Summieren

  Alt 26. Apr 2007, 00:16
Datenbank: MySQL • Version: 4.1.20 • Zugriff über: php
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
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 00:21
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
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 01:01
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
Angehängte Dateien
Dateityp: txt test_daten_435.txt (3,8 KB, 1x aufgerufen)
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 01:04
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 01:09
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 01:12
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
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 01:14
Hallo Thorsten


Danke Funktioniert

schöne Grüsse
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 01:32
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 07:32
Allerdings wird ihm eine IB/FB-SP bei MySQL wenig nützen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Select Probleme mit Summieren

  Alt 26. Apr 2007, 07:40
@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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz