0

我有一个相当令人难以置信的问题。我所追求的是所有行业的列表,无论它们是否与工作相关联。所以..

Web Design [0]
Accounts[3]
Sales[1]
Marketing[0]

以便数据库中的作业具有与作业一起保存的行业 ID。行业表有一个行业类型列表。网页设计、客户、销售、营销等 以下是我目前的 SQL

SELECT ind.name,ind.id, GROUP_CONCAT(job.industry_id) AS id,
COUNT(*) AS industry_count
FROM jobs AS job,
industries AS ind
WHERE ind.id = job.industry_id
GROUP BY industry_id

这将返回属于某个行业的每个工作的计数,但我希望返回所有行业,无论是否有与其相关的工作。非常感谢大家的帮助。抢

4

1 回答 1

0

看来你需要一个LEFT JOIN. 试试这个:

SELECT ind.name, ind.id,
  COALESCE(GROUP_CONCAT(job.industry_id), 'default_value') AS id,
  COUNT(job.industry_id) AS industry_count
FROM industries ind
LEFT JOIN jobs job ON ind.id = job.industry_id
GROUP BY ind.id

请注意,如果给定行业没有工作,您将进入nullGROUP_CONCAT。您可以通过这种方式为这些情况添加默认值。

于 2013-11-09T18:49:09.307 回答