2

私は2つのテーブルを持っています:

t_job
 - id
 - name

t_person:
 - id
 - name
 - job_id (fk t_job->id)

t_other_jobs
 - person_id (fk t_person->id)
 - job_id (fk t_job->id)

基本的には本職で副業0人以上の人がいます。私がやりたいのは、次のようなクエリを作成することです。

PERSON NAME | ALL JOBS COUNT

JOB NAME | HOW MANY PEOPLE HAVE THEM

したがって、人が主な仕事(外部キーであるため、それを持っている必要があります)と他の2つの仕事を持っている場合。結果は次のようになります。

Jorge | 3
4

3 に答える 3

2

彼らには常に仕事があると述べたので、他の仕事を数えて1を足すだけです:

SELECT
  p.id,
  p.name,
  count(o.job_id)+1 as Jobs
FROM
  t_person p
LEFT JOIN 
  t_other_jobs o
ON
  p.id=o.person_id
GROUP BY
  p.id, p.name;
于 2013-04-16T06:46:51.147 に答える
0

試す

最初のクエリ ( PERSON NAME | ALL JOBS COUNT)

SELECT name PersonName, maincount + Count(o.Job_Id) AS AllJobsCount
FROM (
  SELECT p.Id, p.name, COUNT(m.Id) AS MainCount
  FROM  t_person p
  LEFT JOIN t_job m ON  p.job_id = m.Id
  GROUP BY P.Id
) a
Left Join t_other_jobs o ON A.Id = o.person_id
GROUP BY a.Id

2 番目のクエリ ( JOB NAME | HOW MANY PEOPLE HAVE THEM)

SELECT j.Name JobName, 
       (SELECT COUNT(1) FROM t_person WHERE job_id=j.Id) +
       (SELECT COUNT(1) FROM t_other_jobs WHERE job_id=j.Id) AS Count
FROM t_job j
于 2013-04-16T09:13:34.277 に答える