0

我很难代表一个查询。我要转换为 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)

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

4

2 回答 2

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)
于 2012-11-04T21:13:25.687 回答
1

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

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

于 2012-11-04T21:09:03.317 回答