I'm baffled on this one. I retrieve a full filelist using:
SELECT id, filename FROM files WHERE teacher_users_id=1 ...

now I want to exclude some files:
...AND id NOT IN (4,7)

this works nice and return 12 rows. But when I put the NOT IN clause into a subquery (this subquery returns 4 and 7):

SELECT id, filename FROM files WHERE teacher_users_id = 1 AND
(SELECT id FROM files f, offers o, student s
WHERE f.teacher_users_id = 1 AND f.id = o.files_id AND
s.users_id = o.student_users_id AND
s.teacher_users_id = f.teacher_users_id AND
s.users_id = 5

nothing happens. EXPLAIN SELECT returns this:

1 PRIMARY files ref file_FKIndex1 file_FKIndex1 4 const 29 Using where
2 DEPENDENT SUBQUERY s const PRIMARY,student_FKIndex1,student_FKIndex2 PRIMARY 4 const 1
2 DEPENDENT SUBQUERY f eq_ref PRIMARY,file_FKIndex1 PRIMARY 4 func 1 Using where
2 DEPENDENT SUBQUERY o eq_ref PRIMARY,offers_FKIndex1,offers_FKIndex2 PRIMARY 8 const,phpmp3.f.id 1 Using where; Using index

What's wrong? I'm running on MySQL 4.1.16.

Thx in advance