Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Maximum ermitteln



ktroniclein
01-06-2005, 12:42
Folgendes Problem:

Meine Tabelle:

DATUM, NAME ,STÜCK
01.01.01, olli ,2
01.01.01, olli ,3
02.01.01, mk ,1
03.01.01, bh ,1
03.01.01, bh ,1
03.01.01, olli ,4

Meine Abfrage 'SELECT MAX(STÜCK) FROM tabelle WHERE name LIKE olli'
Liefert logischerweise 4. Sie sollte aber in meinem Projekt 5 ergeben (Die Stückzahl vom 01.01.01).
Gibt es eine Möglichkeit bei MySQL das Maximum irgendwie gruppiert abzufragen, also dass die Werte gleicher Daten addiert werden und dieses Maximum ermittelt wird. Habe schn einiges mit GROUP und SUM ausprobiert, aber ohne Erfolg.


VIELEN DANK

Christoph
01-06-2005, 12:57
create view sums_per_day as select sum(stueck) as stueck,name,datum group by datum,name;
select stueck, name from sums_per_day where stueck = (select max(stueck) from sums_per_day);

klewan
01-06-2005, 13:04
create table test (
dt date,
name varchar2(100),
stk number(11)
);




in oracle würd ichs vermutlich so machen:



select max(b) from (select dt a, sum(stk) b from test group by dt);


in mysql so :-)


select dt a, sum(stk) b from test group by dt order by b desc limit 1;

ktroniclein
01-06-2005, 13:28
Langsam...(bitte)

Also mein Code (in PHP) sieht wie folgt aus:

$sql = 'SELECT MAX(stk) '
. ' FROM `ddkstat` '
. ' WHERE `name` '
. ' LIKE \'' . $name . '\'

Christoph:
Wenn ich deinen Code richtig verstehe, handelt es sich um 2 Abfragen, aber mehr verstehe ich nicht????

klewan:
für was steht a und b und wo ist die max abfrage und die kombination mit dem Namen

klewan
01-06-2005, 13:37
die where hab ich nur aus testzwecken genau so wie a und b erfunden bzw weggelassen


mach die where rein und group by dt,name sollt reichen

ktroniclein
01-06-2005, 13:44
Irgendwie versteh ich das einfach nicht.....

select date -> selektiert mir doch das DAtum, ich will aber das maximum anzeigen???

Sorry für die vielen Dummen Fragen

Christoph
01-06-2005, 20:46
Irgendwie versteh ich das einfach nicht.....
select date -> selektiert mir doch das DAtum, ich will aber das maximum anzeigen???

Ohne dich mit SQL zu beschäftigen wirst Du wohl nicht weiterkommen. Schau dir mal in irgendeinem Datenbanken/SQL-Buch das Kapitel zum Thema Gruppieren und Aggregatfunktionen an.