I think your solution is as good as it gets. That's exactly the one I was about to post when you beat me to it. :)
I have only one tangential observation. I like to use the SQL 92 standard syntax for specifying JOINs, rather than the "old style" method of specifying the JOIN condition in the WHERE clause:
Code:
...
(SELECT REPORT.id
FROM REPORT
INNER JOIN KEYWORD ON KEYWORD.report_id = REPORT.id
WHERE KEYWORD.id IN (1707, 13, 15))
It's easier on the optimizer :D, it avoids certain ambiguities which can arise when OUTER JOINS are involved, and it separates "legitimate" selection criteria from JOIN "overhead", thus making the WHERE clause easier for a person to read and understand. YMMV.
Jeff Mason
Custom Apps, Inc.
www.custom-apps.com