tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1459
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    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
     

  2. #2
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    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)

  3. #3
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    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
     

  4. #4
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    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)

  5. #5
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    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
    Code :
    1
    
    <% Response.Write objRS("GesSpiele") %>
    bzw.
    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
    Code :
    1
    
     [...] ORDER BY " & strSort & ""
    erscheint ein fehler: Microsoft JET Database Engine- Fehler '80040e10'
    Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

    Was ist da los? Die Variable strSort wurde ja definiert!
    Danke - lg redwing78
    Geändert von redwing78 (19.09.06 um 16:22 Uhr)
     

  6. #6
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    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:
    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
    Mal davon abgesehen, weiss ich nicht wo du Vorname und Nachname herbekommst, da sie nicht in der Tabellen Struktur vorhanden sind.
     
    Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)

  7. #7
    iilon iilon ist offline Grünschnabel
    Registriert seit
    Sep 2006
    Beiträge
    1
    hallo, wie kann ich hier denn mal eine frage loswerden?
     

  8. #8
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    Letzter Eintrag editiert ?

    Zitat Zitat von redwing78
    ..
    erscheint ein fehler: Microsoft JET Database Engine- Fehler '80040e10'
    Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

    Was ist da los? Die Variable strSort wurde ja definiert!
    Danke - lg redwing78
    Das sieht eher nach einen anderen Problem aus. Anscheindend hast du einen Tippfehler bei einer Feldbezeichnung (Spalte).
    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)

  9. #9
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    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
     

  10. #10
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    Zitat Zitat von iilon
    hallo, wie kann ich hier denn mal eine frage loswerden?
    Zu diesem Thema? Dann einfach die Frage hier einstellen.
    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)

  11. #11
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    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

  1. MYSQL KAlender nach Datum gruppieren, nach Uhrzeit sortieren
    Von kamstarr im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 09.01.10, 01:12
  2. Antworten: 5
    Letzter Beitrag: 24.09.08, 00:10
  3. Excel - Anzeige von berechneten Zellen (SVERWEIS)
    Von Majestic123 im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 12.12.07, 11:08
  4. Sortieren von Variablen nach ihrem Wert
    Von kcyberbob im Forum PHP
    Antworten: 2
    Letzter Beitrag: 27.05.04, 12:24
  5. Sortieren + variablen
    Von Clash im Forum Flash Plattform
    Antworten: 5
    Letzter Beitrag: 17.06.02, 19:24