2014-04-23 70 views
-4

我有下表。我该如何使用mysql查询来解决这个问题?

 
worker 
----------------------- 
ID NAME 
1 James 
2 Robert 
3 David 
4 Peter 

task 
----------------------- 
ID Title 
1 Painting 
2 Repairing 
3 Wiring 

assoc 
------------------------ 
worker_id task_id 
2  1 
1  2 
1  1 

在绘画页面上,我想显示所有工人的名字,但是对于绘画是显示yes/no。

我想

 
------------------------- 
Worker Can Paint 
----------- --------------- 
James Yes 
Robert No 
David Yes 
Peter No 

如何写SQL语句?我没有很好的表现。请帮忙。

+6

这是伟大的!你现在要做的就是编写一个SQL查询。祝你好运! –

+2

不要只是要求代码。告诉我们你的尝试。自己做一些工作。 –

+1

尝试http://www.google.com。 – user986959

回答

1
select w.name, case when sum(t.id is not null) > 0 
        then 'yes' 
        else 'no' 
       end as paint 
from worker w 
left join assoc a on a.worker_id = w.id 
left join task t on a.task_id = t.id and t.title = 'Painting' 
group by w.name 
+2

+1:'jeft join'?我知道一个叫杰夫特的家伙,但他不是木匠:) – MatBailie

+0

谢谢尤尔根。你是天才 – user3556299

0

试试这个:

SELECT name, 
CASE a.task_id 
    WHEN 1 THEN 'Yes' 
    WHEN NULL THEN 'No' 
END 
FROM worker w 
LEFT JOIN assoc a ON 
w.ID=a.worker_id AND a.task_id=1; 
+0

谢谢!你是天才。 – user3556299