Vorherige Zeilen mit Wert aus nachfolgender füllen

Werbung:
PHP:
UPDATE `bon` SET val=(SELECT  `bon`, `uhrzeit` * FROM `testges` WHERE `bon`!=0,) ;
WHERE  uhrzeit.val < `uhrzeit` INSERT INTO `bon`

habe es mal so versucht aber komme da zu keinem ergebnis. Hatte auch mal den Code wie er von dir war angepasst und eingegeben aber da kommen auch nur Fehler. Entweder kennt er die variablen nicht oder es treten probleme bei der Struktur auf.

Die Tabelle ist unverändert wie in meinem ersten Post mit den '0' in sämtlichen spalten bei bon

lg und vielen Dank
 
Werbung:
hi,

so gehts. Ich hoffe nur das die Feldnamen / der Tabellenname richtig ist.

So sieht es vorher aus
Code:
mysql> select * from tabelle;
+----+------+---------+---------------------+------+
| id | ean  | smr     | uhrzeit             | bon  |
+----+------+---------+---------------------+------+
|  1 | 123  | gelesen | 2015-05-28 14:00:00 |    0 |
|  2 | 123  | gelesen | 2015-05-28 14:00:01 |    0 |
|  3 | 123  | gelesen | 2015-05-28 14:00:02 |    0 |
|  4 | 123  | bon     | 2015-05-28 14:03:00 |   99 |
|  5 | 124  | gelesen | 2015-05-28 14:10:00 |    0 |
|  6 | 124  | gelesen | 2015-05-28 14:10:01 |    0 |
|  7 | 124  | gelesen | 2015-05-28 14:10:02 |    0 |
|  8 | 124  | bon     | 2015-05-28 14:13:00 | 4711 |
+----+------+---------+---------------------+------+
8 rows in set (0,00 sec)

Das ist dein Query
Code:
mysql> UPDATE tabelle b SET bon=
    ->     ( SELECT bon FROM ( SELECT * FROM tabelle WHERE bon <> 0 ) n WHERE n.uhrzeit > b.uhrzeit LIMIT 1)
    -> WHERE b.bon=0
    -> ORDER BY b.uhrzeit;
Query OK, 6 rows affected, 2 warnings (0,02 sec)
Rows matched: 6  Changed: 6  Warnings: 2

und das kommt raus:
Code:
mysql> select * from tabelle;
+----+------+---------+---------------------+------+
| id | ean  | smr     | uhrzeit             | bon  |
+----+------+---------+---------------------+------+
|  1 | 123  | gelesen | 2015-05-28 14:00:00 |   99 |
|  2 | 123  | gelesen | 2015-05-28 14:00:01 |   99 |
|  3 | 123  | gelesen | 2015-05-28 14:00:02 |   99 |
|  4 | 123  | bon     | 2015-05-28 14:03:00 |   99 |
|  5 | 124  | gelesen | 2015-05-28 14:10:00 | 4711 |
|  6 | 124  | gelesen | 2015-05-28 14:10:01 | 4711 |
|  7 | 124  | gelesen | 2015-05-28 14:10:02 | 4711 |
|  8 | 124  | bon     | 2015-05-28 14:13:00 | 4711 |
+----+------+---------+---------------------+------+
8 rows in set (0,00 sec)

Hier noch mal das Query
UPDATE tabelle b SET bon=
( SELECT bon FROM ( SELECT * FROM tabelle WHERE bon <> 0 ) n WHERE n.uhrzeit > b.uhrzeit LIMIT 1)
WHERE b.bon=0
ORDER BY b.uhrzeit;

Gruss

Bernd
 
Zurück
Oben