我在表示查询时遇到了一些困难。我想要转换为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)
然而,第二个没有返回正确的结果。我错过了什么?
答案 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)