Ciao a tutti

Ho una tabella di nome "prova" con questi campi:
- id (INT, autoinc, primary)
- value (VARCHAR)
- timefrom (DATETIME)
- timeto (DATETIME)
- hits (INT)

1. Devo controllare se esiste una riga dove "value=$miovalore" e $miadata si trovi fra timefrom e timeto
2. Se esiste, faccio un semplice hits=hits+1, altrimenti creo un nuovo record con hits = 1

Con REPLACE o con ON DUPLICATE KEY non si può fare non potendo avere valori UNIQUE (value, timefrom e timeto devono potersi ripetere)

Ho provato almeno per l'update la seguente query:
UPDATE prova SET hits=hits+1 WHERE id = (SELECT id FROM (SELECT id FROM prova WHERE value='$miovalore' AND $miadata BETWEEN timefrom AND timeto) AS x)
Devo utilizzare il secondo SELECT poiché non è possibile utilizzare come riferimento la stessa tabella in un UPDATE

Avete qualche idea su come migliorare la query o adirittura fare l'inserimento se non esiste un record con value=$miovalore?

Grazie