2014-10-05 3 views
1

У меня проблема. Решение из-за отсутствия знаний SQL с моей стороны. У меня есть 2 стола.MySQL Join и COUNT (*) query

Table : Jobs 
+---+----------+ 
|ID | JobName | 
+---+----------+ 
| 1 | Tinker | 
| 2 | Tailor | 
| 3 | Soldier | 
| 4 | Sailor | 
+---+----------+ 

Table : Applied 
+---+--------------+--------+ 
|ID | JobAppliedID | Name | 
+---+--------------+--------+ 
|1 | 1   |Cliff | 
|2 | 2   |John | 
|3 | 2   |Ringo | 
|4 | 2   |Paul | 
+---+--------------+--------+ 

Теперь, что я хочу сделать, это создать SQL, который будет просто сделать простую выборку на таблицу JOBS, ...

SELECT * FROM Джобсом;

Но я хочу вернуть в том, что SELECT подсчитывает, сколько раз каждое задание было применено. Так, например, он вернет следующее.

+---+----------+-------+ 
|ID | JobName | Count | 
+---+----------+-------+ 
| 1 | Tinker | 1 | 
| 2 | Tailor | 3 | 
| 3 | Soldier | 0 | 
| 4 | Sailor | 0 | 
+---+----------+-------+ 

Я думаю, мне нужен встроенный SELECT, но я просто не знаю с чего начать.

Может ли кто-нибудь помочь?

Спасибо.

ответ

3

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

SELECT j.*, COUNT(a.jobappliedid) AS numApplied 
FROM jobs j 
LEFT JOIN applied a ON a.jobappliedid = j.ID 
GROUP BY j.id 

Fiddle Demo

+0

'COUNT (a.jobappliedid)' будет делать трюк без 'COALESCE'. И даже больше - ваш 'COUNT (*)' будет * всегда * возвращает хотя бы 1 строку, никогда '0' или' NULL'. И еще дальше - 'COUNT (expr)' никогда не возвращает 'NULL'. – zerkms

+0

@zerkms yup you're right Я нахожусь на своем мобильном телефоне, поэтому у меня даже не было возможности проверить ни одного lol –

+0

Спасибо, ребята. Я был почти прав, но у меня не было GROUP BY. – Cliff