MySQL group by, order by und so
H2OBrain
- datenbank
Ich versuche die Werte in der Tabelle tags nach Datum zu sortieren und nach dir zu gruppieren um danach die sortierten Werte aus der Tabelle abzufragen.
Meine Idee war einfach :
select url from tags where dir=ANY(select dir from tags group by dir order by createdate desc);
oder :
select url from tags where dir=ANY(select distinct dir from tags order by createdate);
sollten es möglich machen beliebige Werte aus jener Tabelle auszulesen..
ABER!!! MySQL gibt gar nichts zurück.. (nicht mal einen Fehler) :'(
Die Abfrage bleibt einfach stehen.. ich war schon kurz davor, die Daten mittels group_concat() auszulesen.. aber das ist echt scheisse!!!
Hat jemand eine Idee was ich falsch mache?
Wäre mir eine echte Hilfe..
MFG euer H2OBrain
PS: anstatt url will ich eigentlich sowas wie url,(select dir from dir where id=tags.dir),(select artist from artist where id=tags.artist),(select album from album where id=tags.album),title,track,length,(select year from year where id=tags.year),comment,createdate,(select pic from pic where id=tags.pic) abfragen...
achja..
die werte in group by dir sollten dann noch wieder nach url sortiert werden...
also
select url from tags group by dir,url order by createdate desc;
geht auch nicht...
yo,
select url from tags where dir=ANY(select dir from tags group by dir order by createdate desc);
zum einen würde jedes vernüftige dbms dir bei dieser abfrage eine fehlermeldung ausgeben. du kannst innerhalb einer gruppierung nicht nach eine spalte sortieren, die nicht teil der gruppierung ist. macht ja irgendwie gar keinen sinn.
zum anderen macht es gar keinen sinn, die unterabfrage sortieren zu lassen, dort spielt es keine rolle, in welcher reihenfolge die daten "geliefert" werden.
zum anderen ist mir auch noch nicht klar, warum du überhaupt die unterabfrage benutzt, welche daten du damit filtern willst. ich kann nur vermuten, ich denke mal, du willst gar keine filtern aus der tablle tag.
ohne überhaupt genau zu wissen, was du haben willst, mach doch mal forgendes und schaue, ob es zu einem ergebnis führt. ob nun nach url oder dir zuerst sortieret, kannst du dir aussuchen:
SELECT url, dir
FROM tabs
GROUP BY url, dir
ORDER BY url, dir
Ilja