Ok, this is not complete, you will have to add some more checks but it's probably self evident when you see the rest
CREATE TABLE a (
dep DATE,
arr DATE);
CREATE TABLE b )
start DATE,
end DATE);
INSERT INTO a VALUES ('2009-11-10', '2009-11-26');
INSERT INTO b VALUES ('2009-11-24', '2009-11-29'), ('2009-12-23', '2010-01-03');
SELECT SUM(CASE WHEN start < dep AND end > arr THEN DATEDIFF(end, start) + 1
WHEN end > arr THEN DATEDIFF(arr, start) + 1 END) AS days
FROM a
INNER JOIN b ON start < arr AND end > dep
And I probably should have used <= instead of just < in some places... Do double check all "end case" value scenarios.