ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
1459
1459
EMPFEHLEN
-
Hallo allerseits,
ich habe die statistischen Daten einer Fussballmannschaft. In einer Gesamtansicht werden alle Spiele bzw. Tore aller Saisonen zusammengezählt und auch ordnungsgemäß ausgegeben. Wie kann ich die Tabelle nach den berechneten Werten sortieren bzw. wie ist dies in der Datenbank am einfachsten zu bewerkstelligen?
Danke - vlg redwing78
-
18.09.06 12:28 #2
Mit einer SQL Abfragen. Wie diese konkret aussieht hängt von der Datenbanktabelle ab.
Abgefähr so:
Code sql:1 2 3 4
SELECT Mannschaftsname, COUNT(TabellenKey) AS AnzahlSpiele, SUM(Tore) AS SummeTore, SUM(GegenTore) AS SummeGegentore, SUM(Tore)-SUM(Gegentore) AS Tordifferenz FROM TabelleSpiele GROUP BY Mannschaftsname ORDER BY SUM(Tore)-SUM(Gegentore) DESC
Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hi! Bei meiner tabelle handelt es sich um Spielerdaten - es werden jede Saison Spiele und Tore gezählt und nun sollen alle Spiele und Tore eines Spielers sortierbar ausgegeben werden. Ich habs nun mit COUNT probiert - Meine SQL-Anwesiung:
Code :1
SELECT Nachname, Vorname, COUNT(S0102Spiele+S0203Spiele+S0304Spiele+S0405Spiele+S0506Spiele+S0607Spiele) AS GesSpiele, COUNT(S0102Tore+S0203Tore+S0304Tore+S0405Tore+S0506Tore+S0607Tore) AS GesTore FROM Spieler WHERE Erste=TRUE ORDER BY Nachname,Vorname
Erhalte aber eine Fehlermeldung:Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Nachname' nicht als Teil der Aggregatfunktion einschließt.
Was ist los? Danke für die Hilfe! lg redwing78
-
18.09.06 16:48 #4
Kannst du bitte mal deine Tabellenstruktur posten ?
Wenn du Aggregatfunktionen verwendest, also SUM (Summe), COUNT (Anzahl) usw. müssen alle Felder ohne Aggregatfunktionen in der GROUP BY Klause auf gezählt werden. D.h. in deinem Fall GROUP BY NACHNAME, VORNAME.
Count ermittelt nur die Anzahl der zusammengefassten Datensätze, wenn du eine Summe erhalten möchtest verwende SUM für Summe.Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hi, meine Tabelle sieht folgendermaßen aus (vereinfacht):
SpielerID (AutoWert)
Nachname (Text)
Vorname (Text)
S0506Spiele (Zahl)
S0506Tore (Zahl)
S0607Spiele (Zahl)
S0607Tore (Zahl)
Meine Abfrage lautet nun folgend:
Code :1
strSQL = "SELECT SpielerID, Nachname, Vorname, SUM(S0102Spiele+S0203Spiele+S0304Spiele+S0405Spiele+S0506Spiele+S0607Spiele) AS GesSpiele, SUM(S0102Tore+S0203Tore+S0304Tore+S0405Tore+S0506Tore+S0607Tore) AS GesTore FROM Spieler WHERE Erste=TRUE GROUP BY SpielerID,Nachname,Vorname ORDER BY " & strSort & ""
Definition strSort:
Code :1 2
strSort = Request.QueryString("sort") if strSort = "" then strSort = "Nachname,Vorname" %>
Die Tabelle wird korrekt ausgegeben, d.h. die Gesamtzahl der Spiele und Tore stimmt
bzw.Code :1
<% Response.Write objRS("GesSpiele") %>
Code :1
<% Response.Write objRS("GesSpiele") %>
Das Problem liegt nun im Sortieren. Wenn ich im SQL-Statement ORDER BY Nachname,Vorname angebe, wir die Tabelle zwar ausgegeben, aber kann natürlich nicht sortiert werden. Wenn ich angebe
erscheint ein fehler: Microsoft JET Database Engine- Fehler '80040e10'Code :1
[...] ORDER BY " & strSort & ""
Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
Was ist da los? Die Variable strSort wurde ja definiert!
Danke - lg redwing78Geändert von redwing78 (19.09.06 um 16:22 Uhr)
-
19.09.06 16:38 #6
Jedes Spiel, soweit ich das richtig verstanden habe, in eine extra Spalte zu schreiben macht nicht wirklich Sinn.
Eine Aufteilung wie folgend wäre, meines Erachtens, sinnvoller:
SpielerId, Name, Spiel, Tor
Die Abfrage würde dann wie folgend aussehen:
Code sql:1 2 3
SELECT Name, COUNT(Spiel) AS AnzahlSpiele, SUM(Tore) FROM Tabelle GROUP BY Name
In deiner Abfrage darfst du nicht vergessen zu gruppieren:
Mal davon abgesehen, weiss ich nicht wo du Vorname und Nachname herbekommst, da sie nicht in der Tabellen Struktur vorhanden sind.Code sql:1 2 3 4 5 6 7 8 9
SELECT Nachname, Vorname, COUNT(S0102Spiele+S0203Spiele+S0304Spiele+S0405Spiele+S0506Spiele+S060Spiele) AS GesSpiele, SUM(S0102Tore+S0203Tore+S0304Tore+S0405Tore+S0506Tore+S0607Tore) AS GesTore FROM Spieler WHERE Erste=TRUE GROUP BY Nachname, Vorname ORDER BY Nachname,Vorname
Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
hallo, wie kann ich hier denn mal eine frage loswerden?
-
19.09.06 16:43 #8
Letzter Eintrag editiert ?
Das sieht eher nach einen anderen Problem aus. Anscheindend hast du einen Tippfehler bei einer Feldbezeichnung (Spalte).
Zitat von redwing78
Unter Access ist es so das nicht vorhandene Spaltenbezeichnungen als Parameter interpertiert werden. Überprüfe bitte nach Schreibfehlern.Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hi, danke für die vielen Infos.
Meine datenbank umfaßt schon ca. 600 Spieler mit persönl. Daten-eine eigene Tabelle mit Mannschaften gibts auch schon, ich glaub das wär mir jetzt zuviel Aufwand, das umzuändern.
Beim Sortieren kommt ja nur die Fehlermeldung, wenn ich anstelle
ORDER BY Nachname,Vorname folgendes schreibe
ORDER BY " & strSort & ""
In anderen ASP-Dokumenten mach ich das auch so und es funktioniert.
Zur Kontrolle ist die Ausgabedatei unter folgender URL zu finden:
www.fckitz.at/1mannschaft/hall_of_fame.asp
Danke - Gruß redwing78
-
20.09.06 10:29 #10Zu diesem Thema? Dann einfach die Frage hier einstellen.
Zitat von iilon
Ansonsten einen neue Thread im richtigen Forum eröffnen und bitte den Titel sinnvoll wählen. Am besten vorher die Netiquette lesen.
@redwing78
Bei sortierung nach Aggregatfunktionen musst das Order Statment genauso wählen, wie für die Spalte
Bsp.:
Code sql:1
ORDER BY COUNT(Spiele)
Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
hi! Wollte den Link zum Sortieren einbauen, erhalte aber immer eine Fehlermeldung.
Der Link lautet (vereinfacht):
Code :1
<a href="hall_of_fame.asp?sort=SUM(S0506Spiele+S0607Spiele)">Spiele</a>
Dann erhalte ich aber eine fehlermeldung
Syntaxfehler (fehlender Operator) in Abfrageausdruck 'SUM(S0102Spiele S0203Spiele S0304Spiele S0405Spiele S0506Spiele S0607Spiele)'.
Also offenbar verschwinden die '+'-Operatoren im Link. Wie kann man das vermeiden?
LG Josef
Ähnliche Themen
-
MYSQL KAlender nach Datum gruppieren, nach Uhrzeit sortieren
Von kamstarr im Forum Relationale DatenbanksystemeAntworten: 7Letzter Beitrag: 09.01.10, 01:12 -
Array sortieren nach leeren Elementen sortieren, Reihenfolge beibehalten
Von trench140 im Forum PHPAntworten: 5Letzter Beitrag: 24.09.08, 00:10 -
Excel - Anzeige von berechneten Zellen (SVERWEIS)
Von Majestic123 im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 12.12.07, 11:08 -
Sortieren von Variablen nach ihrem Wert
Von kcyberbob im Forum PHPAntworten: 2Letzter Beitrag: 27.05.04, 12:24 -
Sortieren + variablen
Von Clash im Forum Flash PlattformAntworten: 5Letzter Beitrag: 17.06.02, 19:24





Zitieren
Login





