MySQL Abfrage

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_abfrage_210264/page_1 - zur Vollversion wechseln!


kleinerChemiker schrieb am 12.09.2009 um 22:36

Code:
SELECT * FROM sphere_chars WHERE account LIKE '%account%' GROUP BY uid ORDER BY logout DESC

Jeder Account hat im Normalfall mehrere uid's (Spielercharaktere). Für jedes ein/ausloggen wird eine neue Zeile eingefügt. Jetzt hätte ich gerne von einem Account von jeder uid die "letzte" Zeile, das ist die Zeile, wo logout (DATETIME) am größten ist. Derzeit bekomme ich leider immer die erste Zeile, allerdings die ge-GROUPten zeilen nach logout geordnet. D.h. es wird erst GROUP BY ausgeführt und dann ORDER BY, kann ich das irgendwie umdrehen?

tia


prayerslayer schrieb am 12.09.2009 um 22:41

du könntest ein subselect einbauen.

Code:
WHERE logout = (SELECT MAX(logout) FROM account)


Spikx schrieb am 12.09.2009 um 22:42

SELECT *,MAX(logout) etc.

//edit: den subselect brauchst du gar nicht, da im Falle eines GROUP BYs die MAX funktion ja das Maximum einer group liefert.


kleinerChemiker schrieb am 12.09.2009 um 22:47

Zitat von Spikx
SELECT *,MAX(logout) etc.

//edit: den subselect brauchst du gar nicht, da im Falle eines GROUP BYs die MAX funktion ja das Maximum einer group liefert.

da liefert er mir die erste zeile und hängt MAX(logout) an. dann probier ich mal die subselects, glaub 4.1 hatte das eh schon.

edit:
auch mit subselect wird die erste zeile geliefert :(
hab mir das bischen überlegt, ich müßte im subselect max(logout) finden, das maximal für die uid ist.


prayerslayer schrieb am 15.09.2009 um 00:08

Code:
WHERE logout IN (SELECT MAX(logout) FROM account GROUP BY uid)

maybe?


kleinerChemiker schrieb am 15.09.2009 um 17:09

eine gute Idee, das könnte klappen. Werd ich dann zu Hause gleich mal ausprobieren.
thx




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025