Sortierung nach Datum innerhalb einer Tabelle

Hallo,

ich habe folgende Tabelle (tabelle1):

tid* kdid sbid datum feld1 feld2
1 1 2 20070809153832 23 13
2 1 2 20070809133832 22 14
3 1 2 20070722102411 24 12
4 1 2 20070714081245 24 12


Als Ergebnis möchte ich nun pro Tag also 20070809 immer nur das neueste
Ergebnis gelistet haben.
Also für das Datum 20070809 soll als Ergebnis die Zeile mit tid=1
erscheinen.



Mit folgender Abfrage erhalte ich allerdings immer das älteste Datum pro
Tag:

SELECT *
FROM tabelle1
WHERE kdid =1
AND sbid =2
GROUP BY substring( datum, 1, 8 )
ORDER BY datum DESC


Wie kann ich die Sortierung hinbekommen das mir pro Tag immer der
neueste Datum / Zeit Eintrag gelistet wird?


Danke im Voraus,
Gruss

Tobias
Tobias [ Sa, 01 September 2007 12:26 ] [ ID #1810268 ]

Re: Sortierung nach Datum innerhalb einer Tabelle

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)
Andreas Kretschmer [ Sa, 01 September 2007 12:52 ] [ ID #1810269 ]

Re: Sortierung nach Datum innerhalb einer Tabelle

Tobias schrieb:
>
> tid* kdid sbid datum feld1 feld2
> 1 1 2 20070809153832 23 13
> 2 1 2 20070809133832 22 14
> 3 1 2 20070722102411 24 12
> 4 1 2 20070714081245 24 12

Also in etwa so:

SHOW CREATE TABLE tabelle\G
*************************** 1. row ***************************
Table: tabelle
Create Table: CREATE TABLE `tabelle` (
`tid` int(10) unsigned NOT NULL auto_increment,
`kdid` int(10) unsigned NOT NULL,
`sbid` int(10) unsigned NOT NULL,
`datum` datetime NOT NULL,
PRIMARY KEY (`tid`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
1 row in set (0.01 sec)


SELECT tid, kdid, sbid, datum FROM tabelle;
+-----+------+------+---------------------+
| tid | kdid | sbid | datum |
+-----+------+------+---------------------+
| 1 | 1 | 2 | 2007-08-09 15:38:32 |
| 2 | 1 | 2 | 2007-08-09 13:38:32 |
| 3 | 1 | 2 | 2007-07-22 10:24:11 |
| 4 | 1 | 2 | 2007-07-14 08:12:45 |
+-----+------+------+---------------------+
4 rows in set (0.00 sec)

> Als Ergebnis möchte ich nun pro Tag also 20070809 immer nur das neueste
> Ergebnis gelistet haben.

SELECT a.tid, a.kdid, a.sbid, a.datum
FROM tabelle a
LEFT JOIN tabelle b
ON DATE(a.datum) = DATE(b.datum)
AND a.datum < b.datum
WHERE a.kdid = 1
AND a.sbid = 2
AND b.datum IS NULL
+-----+------+------+---------------------+
| tid | kdid | sbid | datum |
+-----+------+------+---------------------+
| 1 | 1 | 2 | 2007-08-09 15:38:32 |
| 3 | 1 | 2 | 2007-07-22 10:24:11 |
| 4 | 1 | 2 | 2007-07-14 08:12:45 |
+-----+------+------+---------------------+
3 rows in set (0.00 sec)

Eine Erläuterung dazu spare ich mir. Die findest du oft genug, wenn du
dich in der Gruppe mal ein wenig umsiehst.

Grüße,
Dominik
--
Wo kämen wir denn hin, wenn jeder sagen würde wo kämen wir hin, aber
niemand gehen würde um zu sehen, wohin wir kämen, wenn wir gingen?
(Autor unbekannt)
Dominik Echterbruch [ Di, 04 September 2007 22:36 ] [ ID #1811939 ]
Datenbanken » de.comp.datenbanken.mysql » Sortierung nach Datum innerhalb einer Tabelle

Vorheriges Thema: NOW() nicht zuverlässig?
Nächstes Thema: Fulltext