PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GROUP BY und ORDER BY Problem



Notorious
21.04.2015, 17:19
Ich hab folgendes Problem, ich will eine Liste generieren wo man Maps mit bestimmten Zeiten auslesen kann. Nur ich will, dass genau die beste Zeit also die lowest time angezeigt wird. Group by deswegen weil ich nicht mehrere/doppelte Einträge ausgeben will und order by wegen der besten Zeit.


SELECT * FROM times WHERE Type = '0' AND Style = '0' GROUP BY MapID ORDER BY Time

Es gibt mir nichts aus, könnte mir jemand dabei helfen?

Habe es auch mit INNER JOIN probiert aber ich bin mir sicher, dass ich da was falsch mache..

n00kie
21.04.2015, 17:20
Du hast "ODER BY" geschrieben und nicht "ORDER BY"..

Mal davon abgesehen ist "SELECT *" ein NoGo.

Notorious
21.04.2015, 17:23
Mal davon abgesehen ist "SELECT *" ein NoGo.

Es wird keine Seite und wird nicht Online gestellt, es ist nur zum generieren einer Liste da

n00kie
21.04.2015, 17:37
Es wird keine Seite und wird nicht Online gestellt, es ist nur zum generieren einer Liste da
Okay, wie ich sehe hast du den Rechtschreibfehler hier korrigiert. Daran hat es also nicht gelegen. Wie sieht den Aufbau der Tabelle "times" aus?

Notorious
21.04.2015, 17:44
http://puu.sh/hlNZf/703abc8050.png

Das ist für die times Tabelle

sn0w
21.04.2015, 17:49
Vorschlag wenn Integer für Type und Style verwendet:


SELECT * FROM `times` WHERE `Type` = 0 AND `Style` = 0 GROUP BY `MapID` ORDER BY `Time`

Ansonsten:


SELECT * FROM `times` WHERE `Type` = '0' AND `Style` = '0' GROUP BY `MapID` ORDER BY `Time`

Domenic
21.04.2015, 22:16
Du verwendest keine Aggregatfunktionen, also besser DISTINCT als GROUP BY verwenden. Ist meiner Meinung nach ein besserer Stil, auch wenn das Resulat gleich ist.

Gruß
Domenic

Notorious
21.04.2015, 23:51
@sn0w Der query ging leider nicht, also hab ich nach der ganzen sucherei es endlich hinbekommen...

Ich hoffe es hilft den anderen.

SELECT * FROM ( SELECT * FROM times WHERE Type = '0' AND Style = '0' ORDER BY Time
) t
GROUP BY MapID

n00kie
22.04.2015, 09:14
Warum ein Subselect? Hab das ganze jetzt mal reproduziert und so getestet.



SELECT MapID, min(Time)
FROM times
WHERE Type=0 AND Style=0
GROUP BY MapID
ORDER BY Time

Bekomme zu jeder MapID die beste Zeit ausgegeben.