Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi zweite oder dritte Eintrag bei Group by (https://www.delphipraxis.net/92606-zweite-oder-dritte-eintrag-bei-group.html)

khalilazz 23. Mai 2007 08:14

Datenbank: mysql • Version: 5.02 • Zugriff über: ODBC

zweite oder dritte Eintrag bei Group by
 
Hallo
Ich habe eine Tabelle wo die SchülterNote eingetragen sind.
ICh möchte den Zweit oder den Dritte beste Note eines Schüler herausfiltern,wo für jeden Schülter bis 10 NOten gescpeichert werden kann
Ich habe alles probiert aber bei Group by passt nur Min oder Max
ich würde auf jeden Vorschlag freuen

Select ....Note... From Schueltertbl
Group by Name

Gremlin 23. Mai 2007 08:58

Re: zweite oder dritte Eintrag bei Group by
 
Tut mir leid, ich bin mir nicht sicher was du genau möchtest. :gruebel:
Wärst du bitte so nett und könntest du eine Beschreibung deiner Tabelle(n) und deines Anliegens posten?

s-off 23. Mai 2007 09:04

Re: zweite oder dritte Eintrag bei Group by
 
Ich denke mal, dass er ein Feld in die GroupBy Klausel aufnehmen möchte, welches nicht im Select steht => dann hakt's natürlich :stupid:

Edit: Oracle meint dazu übrigens folgendes:

Zitat:

ORA-00979 not a GROUP BY expression

Cause: The GROUP BY clause does not contain all the expressions in the SELECT clause. SELECT expressions that are not included in a group function, such as AVG, COUNT, MAX, MIN, SUM, STDDEV, or VARIANCE, must be listed in the GROUP BY clause.

Action: Include in the GROUP BY clause all SELECT expressions that are not group function arguments.

Gremlin 23. Mai 2007 09:52

Re: zweite oder dritte Eintrag bei Group by
 
Eigentlich ist IMHO nur vorgeschrieben, das alle Felder die keine Aggregatsfunktion beinhalten und keine
Konstanten sind in der group by angegegen werden müssen. Es ist aber zulässig weitere
Bedingungen im group by anzugeben, die unabhängig vom Select-Bereich sind.

marabu 23. Mai 2007 09:53

Re: zweite oder dritte Eintrag bei Group by
 
Hallo,

mir scheint es soll statt der besten Note eines jeden Schülers dessen zweitbeste (z.B.) Note ermittelt werden. Da es dafür keine vordefinierte Funktion gibt, muss man den Tabellenaufbau kennen und kann dann vielleicht mit geordneten (ORDER BY) und abgezählten (LIMIT) SubSelects zu einem Ergebnis kommen.

Außerdem kommt es noch auf die Definition von "zweitbeste Note" an. Wenn man alle Noten (1 1 2) nach ihrem Wert aufsteigend ordnet, kann die zweitbeste Note als "1" oder als "2" ermittelt werden - je nach Definition.

Grüße vom marabu

mquadrat 23. Mai 2007 10:32

Re: zweite oder dritte Eintrag bei Group by
 
Ich schließ mich Marabu an, je Schüler eine Query sortiert nach den Noten und dann mittels Limit eben eine rausgesucht.

daddy 23. Mai 2007 20:11

Re: zweite oder dritte Eintrag bei Group by
 
In Firebird könnte man die zweit- und drittbeste Note z.B. über den Befehl

SQL-Code:
Select first 2 skip 1 Distinct(Note) from Schuelertbl order by Note
ermitteln. (Vorausgesetzt es gibt überhaupt mehr als 1 Note.) Gibt es etwas Vergleichbares in MySQL? Entspricht das von Euch erwähnte "Limit" diesem Konstrukt?

mkinzler 23. Mai 2007 20:12

Re: zweite oder dritte Eintrag bei Group by
 
Zitat:

Entspricht das von Euch erwähnte "Limit" diesem Konstrukt?
Ja

Elvis 23. Mai 2007 20:37

Re: zweite oder dritte Eintrag bei Group by
 
Die Frage ist immer, ob man das wirklich in ein SQL Statement werfen will (wobei es hier wahrscheinlich wirklich trivial ist).
Möglich wäre sowas:
SQL-Code:
SELECT t1.Schüler
      ,Min(t1.Note)
FROM  NotenBlabla t1
      ,NotenBlabla t2
WHERE t1.Schüler = t2.Schüler
and   t1.Note > t2.Note
GROUP BY t1.Schüler


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 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