[development] SQL Query Doubt

David Metzler metzler.dl at gmail.com
Sat Apr 16 17:30:10 UTC 2011


Or....

Select * form employees e where 
  exists (select 1 from skills s where s.employee_id=e.employee_id and s.skill_id = 'java')
AND exists(select 1 from skills s where s.employee_id=e.employee_id and s.skill_id='C++')

I have heard that mysql will perform better with Ivan's query, but I haven't verified that this is the case. 

Some DB's preform bettter with this query than the join, some perform worse. 
On Apr 16, 2011, at 5:28 AM, Ivan Sergio Borgonovo wrote:

> On Sat, 16 Apr 2011 04:24:35 -0700
> Jason Flatt <drupal at oadaeh.net> wrote:
> 
> 
>> SELECT EmployeeID FROM {tablename} WHERE Skill = 'PHP' AND Skill =
>> 'Java';
> 
> So 'Java' = 'PHP', interesting.
> 
> create table test.employee (eid int, skill varchar (15), primary key
> (eid, skill));
> 
> select * from test.employee;
> 1;"PHP"
> 1;"SQL"
> 1;"Java"
> 1;"VoIP"
> 2;"Shell Scripting"
> 2;"PHP"
> 2;"Java"
> 3;"C++"
> 3;"PHP"
> 3;"Pearl"
> 
> data sample is a bit different to check employee 3 doesn't get
> selected.
> 
> select t1.eid from test.employee t1
>  join test.employee t2 on t1.eid=t2.eid
>  where t1.skill='Java' and t2.skill='PHP'
>  group by t1.eid
> ;
> 1
> 2
> 
> 
> 
> 
> 
> 
> 
> -- 
> Ivan Sergio Borgonovo
> http://www.webthatworks.it
> 



More information about the development mailing list