2013-11-09 3 views
0

У меня есть довольно ошеломляющая проблема. То, что мне нужно, это список всех отраслей, независимо от того, связаны ли они с работой или нет. Так что ...Количество возвращаемых значений MySQL MySQL

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

Чтобы задания в базе данных имели идентификатор отрасли, который был сохранен с заданием. в отраслевой таблице приведен список видов промышленности. Веб-дизайн, бухгалтерия, продажи, маркетинг и т.д. Ниже мой 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 

Это возвращает количество каждого задания, которое принадлежит к отрасли, но я хочу, чтобы все отрасли промышленности должны быть возвращены с или без рабочих мест, связанных с их. Спасибо всем за помощь. Rob

ответ

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 

Примечание, если нет работы для данной отрасли вы получите null в GROUP_CONCAT. Вы можете добавить значение по умолчанию для этих случаев таким образом.

+0

Да, спасибо. Но теперь счетчик возвращает 1 для всех нулевых записей. Что мне не хватает. спасибо за вашу помощь – bobcoder

+0

Да, поэтому мы получаем ... например, продажи [0] – bobcoder

+1

Ты звезда. Огромное спасибо. Хороших выходных – bobcoder

Смежные вопросы