• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

select abfrage

tina23

New member
Hallo erstmal.

Ich suche nach dem letzten Status 0 Wert einer UID und
dem dazugehörigen (selbe UID) Status 1 Wert vor dem letzten Status 0 Wert.



Das ist meine Tabelle:

mysql> select * from dznw;
+----+------+-----------------------+--------+
| id | uid | datum | status |
+----+------+-----------------------+--------+
| 1 | 1000 | 2009-01-24 08:01:01 | 1 | (1..... arbeitsbeginn)
| 2 | 1000 | 2009-01-24 10:12:15 | 0 | (0..... arbeitsende)
| 3 | 1000 | 2009-01-24 10:17:23 | 1 |
| 4 | 1000 | 2009-01-24 12:06:46 | 0 |
| 5 | 2222 | 2009-01-24 12:30:14 | 1 |
| 6 | 2222 | 2009-01-24 14:03:06 | 0 |
| 7 | 2222 | 2009-01-24 14:27:27 | 1 |
| 8 | 1000 | 2009-01-24 15:04:23 | 1 |
| 9 | 2222 | 2009-01-25 08:46:18 | 0 |
| 10 | 1000 | 2009-01-25 08:47:39 | 0 |
| 11 | 1000 | 2009-01-25 12:00:00 | 1 |
+----+------+---------------------+--------+
11 rows in set (0.00 sec)

Jetzt benutze ich folgende Abfrage:


mysql> SELECT `id`, UNIX_TIMESTAMP(`datum`) AS `timestamp` FROM `dznw` WHERE `status` = '0' ORDER BY `id` DESC LIMIT 1;
+----+------------+
| id | timestamp |
+----+------------+
| 10 | 1232869659 |
+----+------------+
1 row in set (0.01 sec)

Somit bekomme ich genau den Wert den ich suche.



Jetzt zu meinem PROBLEM:
Aber wenn ich jetzt nach dem letzten Status 1 Wert „vor“ dem letzten Status 0 Wert suche weiß ich nicht wie das funktionieren soll.
Diese Abfrage funktioniert nur wenn der letzte Status Wert eine 0 enthält,


mysql> SELECT `id`, UNIX_TIMESTAMP(`datum`) AS `timestamp` FROM `dznw` WHERE `status` = '1' AND `id` < 35 ORDER BY `id` DESC LIMIT 1;
+----+------------+
| id | timestamp |
+----+------------+
| 11 | 1232881200 |
+----+------------+
1 row in set (0.00 sec)

Was mach ich falsch
 
Zurück
Oben