Beh! proprio non mi piace. Premetto che non so cosa vorresti ottenere.

Se metti id_personale = 19 poi dopo non ha piu' senso mettere id_personale=19 in OR con il confronto di una data. Lo stesso vale per id_personale=33. Non potra' mai essere vera una AND dove id_personale=19 AND id_personale=33

mettiamo che tu voglia trovare il record che abbia una data compresa tra start ed end e (AND) id_personale = 19
oppure (OR)
abbia una data differente compresa sempre tra start ed end ma con id_personale = 33
allora dovresti calibrare diversamente il where.

Es.:

codice:
WHERE (id_personale='19' AND 
('2010-06-17' BETWEEN data_start AND data_end OR '2010-06-18' BETWEEN data_start AND data_end))

OR

(id_personale='33' AND 
('2010-09-29' BETWEEN data_start AND data_end OR '2010-06-17' BETWEEN data_start AND data_end))
in questo caso potresti ricevere sia id_personale=19 che id_personale = 33 oppure solo il 19 o solo il 33 purche' rispettino il range delle date richiesto.