se ho capito hai detto che sia la data che il turno sono tipi stringa...
considerando 'mattina', 'pomeriggio', 'sera', 'notte' come possibili valori del turno della medesima data
non funziona così?
tutte le tuple che soddisfano il giorno iniziale, in questo caso 15/10/2014
MENO, le tuple che contengono o non contengono qualche turno, in questo caso non devono contenere 'notte'
data=15/10/2014 AND NOT turno = 'notte'
piùtutte le tuple che soddisfano il giorno finale, in questo caso 16/10/2014
MENO, le tuple che contengono o non contengono qualche turno, in questo caso cerchiamo solo 'notte'
data = 16/10/2014 AND turno = 'notte'
dovrebbe diventare:SELECT * FROM mattinale WHERE ( data=15/10/2014 AND NOT turno = 'notte') OR (data = 16/10/2014 AND turno = 'notte')
in questo caso, giorno iniziale e giorno finale sono uno successivo all' altro e quindi non ci sono giorni che intercorrono tra il primo e l' altro.
Nel caso ci fossero dovrebbe essere sufficiente aggiungere anche i giorni intercorrenti le due date.
supponendo di volere le tuple dalla mattina del 15 alla notte del 17 sarebbe:
SELECT * FROM mattinale WHERE ( data=15/10/2014 AND NOT turno = 'notte') OR (data = 17/10/2014 AND turno = 'notte') OR (data = 16/10/2014)