我有一个名为Jobs的表,以及通过JobID连接到Jobs的其他表(地点和时间)。 因此,根据下表,我在SQL服务器中需要以下内容:
Jobs (JobID,Company)
123 ABC
456 DEF
789 GHI
PLACES (Country,JobID)
BR 123
EU 123
CA 456
时间(时间,作业ID)
05 456
08 123
09 789
需要的查询结果:
QRYRESULT(JobID,CountOFPLaces,CountofTimes)
123 , 2, 1
456 , 1 , 1
789 , , 1
感谢您的帮助!
答案 0 :(得分:0)
这里的关键是知道使用外连接可以为所有作业提供所有结果,并且计数(不同字段)将为您提供不同的计数,从而消除连接添加的额外计数(假设每条记录都是唯一的并且重复在给定的表中不存在)
SELECT J.jobID,
count(Distinct P.Country) as CountOfPlaces,
Count(Distinct T.Time) as CountOfTimes
FROM Jobs J
LEFT JOIN Places P
on J.JobID=P.JobID
LEFT JOIN Times T
on T.JobID = J.JobID
GROUP BY J.JobID
答案 1 :(得分:0)
select id, pc, pt
from jobs j
left join (select jobid, count(Country) pc from Places group by JobId) p
on j.id = p.JobId
left join (select jobid, count([time]) pt from Times group by JobId) t
on j.id = t.JobId
你应该使用" group by"用于计算具有相同作业ID的行的语句" Places"和"时代"然后加入"乔布斯"表。 我还想关注你应该在join语句中使用子查询,否则你会得到错误的数据。