Ik heb de volgende tabel:
Om de zoveel minuten haal ik de waarden van de afgelopen tijd. Deze periode kan echter de periode in de tabel overlappen, wat tot dubbele waarden leidt voor dezelfde tijd
.
Wanneer de combinatie van 'systeem' en 'tijd' al voorkomen, dan hoeft 'waarde' alleen geüpdatet te worden.
Eenvoudig dacht ik
.. Iets met ON DUPLICATE KEY UPDATE... Maar helaas, kom er niet uit.
Wat heb ik geprobeerd:
en
Ik denk dat het niet goed gaat, omdat de primary key wel telkens verschilt, maar die wil ik eigenlijk uitsluiten.
Uiteraard kan ik eerst een query draaien waarin gecheckt wordt of er al een waarde voor het systeem/tijd aanwezig is, maar heb moet vast in 1 query kunnen.
id (primary key) | systeem(key) | tijd(key) | waarde |
1 | 1 | 2012-12-28 21:40:00 | 10 |
2 | 1 | 2012-12-28 21:41:00 | 80 |
3 | 1 | 2012-12-28 21:42:00 | 80 |
4 | 2 | 2012-12-28 21:40:00 | 900 |
5 | 2 | 2012-12-28 21:41:00 | 1000 |
... |
Om de zoveel minuten haal ik de waarden van de afgelopen tijd. Deze periode kan echter de periode in de tabel overlappen, wat tot dubbele waarden leidt voor dezelfde tijd

Wanneer de combinatie van 'systeem' en 'tijd' al voorkomen, dan hoeft 'waarde' alleen geüpdatet te worden.
Eenvoudig dacht ik
Wat heb ik geprobeerd:
code:
1
2
3
4
5
| INSERT INTO data (systeem,tijd,waarde) VALUES ('1','2012-12-28 21:40:00','10') ON DUPLICATE KEY UPDATE systeem='1', tijd='2012-12-28 21:40:00',waarde='10'; |
en
code:
1
2
3
| REPLACE INTO data (systeem,tijd,waarde) VALUES ('1','2012-12-28 21:40:00','10'); |
Ik denk dat het niet goed gaat, omdat de primary key wel telkens verschilt, maar die wil ik eigenlijk uitsluiten.
Uiteraard kan ik eerst een query draaien waarin gecheckt wordt of er al een waarde voor het systeem/tijd aanwezig is, maar heb moet vast in 1 query kunnen.