# GATE | GATE-CS-2006 | Question 68

• Difficulty Level : Medium
• Last Updated : 12 Apr, 2018

Consider the relation “enrolled(student, course)” in which (student, course) is the primary key, and the relation “paid(student, amount)” where student is the primary key. Assume no null values and no foreign keys or integrity constraints. Given the following four queries:

```Query1: select student from enrolled where
student in (select student from paid)
Query2: select student from paid where
student in (select student from enrolled)
Query3: select E.student from enrolled E, paid P
where E.student = P.student
Query4:  select student from paid where exists
(select * from enrolled where enrolled.student
= paid.student) ```

Which one of the following statements is correct?
(A) All queries return identical row sets for any database
(B) Query2 and Query4 return identical row sets for all databases but there exist databases for which Query1 and Query2 return different row sets.
(C) There exist databases for which Query3 returns strictly fewer rows than Query2
(D) There exist databases for which Query4 will encounter an integrity violation at runtime.

Explanation: Take an example:

```Table enrolled
student   course
----------------
abc      c1
xyz      c1
abc      c2
pqr      c1

Table paid
student  amount
-----------------
abc      20000
xyz      10000
rst      10000

Output of Query 1
abc
abc
xyz

Output of Query 2
abc
xyz

Output of Query 3
abc
xyz

Output of Query 4
abc
xyz```

Query 1 and Query 3 may return repetitive student values as “student” is not a key in relation enrolled, however query 2 and query 4 always return same row sets.

So, option (B) is correct.

Quiz of this Question

My Personal Notes arrow_drop_up
Recommended Articles
Page :