MySQL:从多个表到Join

时间:2012-11-04 20:54:14

标签: mysql

我在表示查询时遇到了一些困难。我想要转换为SQL语句的语句是:

select count(*)
from assigned, tasks
where 
assigned.id_task = 1
or 
(assigned.id_project=tasks.id_project and tasks.id=1)  

到目前为止我成功的是:

select count(*) 
from assigned a 
left join projects p
  on p.id=a.id_project
left join tasks t
  on t.id_project=p.id
where (a.id_task=1 or t.id=1)

然而,第二个没有返回正确的结果。我错过了什么?

2 个答案:

答案 0 :(得分:1)

我并不感到惊讶,第二个查询返回不同的结果,因为它使用了一个额外的表和不同的连接条件。虽然第二个选择应该提供至少与第一个一样多的行,因为第一个使用内连接而第二个使用左连接。

第一个查询也使用连接。它只是含蓄地表达出来。

答案 1 :(得分:1)

我弄清楚问题出在哪里。正确的join查询是:

select count(*) 
from assigned a 
left join tasks t
  on t.id_project=a.id_project
where (a.id_task=1 or t.id=1)