Well, thanks for the reply.
The first query:
select distinct person
from classes
where class = 'physics' or class = 'chemistry'
isn't the query that i'm looking for. This query will return result with persons that take one of the classes (or both). My goal is result with persons that take strictly the both classes.
The second query is the correct one. But, i'm not quite sure about the efficiency of that type of query. In this case, everything is fine. But, if i need to supply more conditions (not just 'physics' and 'chemistry'), let say, 100 other classes (this is fictious

), then i should "create" 100 "instances" of the same table 'CLASSES':
select distinct person
from classes c1, classes c2, . . . . . , classes c100
. . . . . . . . . . . .
As far as i know, joining 100 tables is very expensive operation, both in processing time and memory.
So, is there more convenient and flexible solution to this problem?
-- And, no

, this is not a homework assignment, although seems like that because of the example. I have more complex problem to solve, but this simple example can show me the right way --