Ciao,
la query que stai creando dovrebbe essere questa:
SELECT *
FROM testdata
WHERE ( '2009-05-01' >= date_from
AND
'2009-05-01' <= date_to
)
OR ( '2009-07-15' >= date_from
AND
'2009-07-15' <= date_to
)
peró credo che manca un altro caso, quando il periodo selezionato si trova dentro un periodo piú grande, ad esempio, come fascia di prezzo hai un anno intero (2009-01-01 - 2009-12-31) e il tuo periodo si trova dentro, in questo caso aggiungi questo or:
OR
('2009-05-01'<=date_from AND '2009-07-15'>=date_to)
Cosí dovrebbe funzionare.
Peró, parere strettamente personale, non mi piacciono i sistemi in cui hai le fasce di prezzo inserite in periodi, preferisco, anche se hai un'occupazione maggiore sul db, un sistema che mantiene i prezzi giorno per giorno, molto piú flessibile da gestire e applicare.
Ciao
Giuseppe