I am dealing with getting the output of some common values. My database is quite big so I am just giving a dummy database here for understanding purposes.
Here is the table I have:
A 101 A 103 B 101 B 102 C 102 D 101 E 101 E 102 E 103 E 105
I have to extract only those variables that have the given common room numbers alotted. This is the table for the required data:
101 103
Its output should be like this:
A E
A and E, both variables have common room values i.e. 101 and 103
I came up with this query:
I have to print this, ones with count as 2!!
select count(*) from table1, table2 where table1.room_no = table2.rooms group by table1.variables ;
Any help would be appreciated.
Advertisement
Answer
I have to extract only those variables that have the given common room numbers allotted.
I don’t know what your table or columns are called, but you can use aggregation and having
:
select col1 from t where col2 in (1, 3) -- list of common items group by col1 having count(*) = 2; -- size of list
If duplicates are allowed in the data, then use count(distinct col2)
in the having
clause.
If these values are stored in a second table, then just use:
select t1.col1 from table1 t1 join table2 t2 on t1.value = t2.value group by t1.col1 having count(*) = (select count(*) from table2);