Reputation: 900
I need to write a query that returns the name of the company, and the number of the particular Job Orders that company owns.
Right now my query is like this:
SELECT c.name, cj.joborder_id
FROM company c, joborder jo, candidate_joborder cj
WHERE c.company_id=jo.company_id
AND jo.joborder_id=cj.joborder_id
AND jo.status = 'Active'
AND cj.status=700;
This returns the following table:
Name | Job Order ID
X | 1874
Y | 2003
Y | 2003
Z | 2001
What I want is:
Name | Count
X | 1
Y | 2
Z | 1
Can someone help me with this?
Thanks
Upvotes: 0
Views: 66
Reputation: 26279
The query you want is the following:
SELECT c.name,
count(cj.joborder_id)
FROM company c,
joborder jo,
candidate_joborder cj
WHERE c.company_id=jo.company_id
AND jo.joborder_id=cj.joborder_id
AND jo.status = 'Active'
AND cj.status=700
GROUP BY c.name;
I'd suggest the following references for SQL aggregation and specifically group by and count:
Upvotes: 2
Reputation: 28217
SELECT DISTINCT(c.name), COUNT(cj.joborder_id)
FROM company c, joborder jo, candidate_joborder cj
WHERE c.company_id=jo.company_id
AND jo.joborder_id=cj.joborder_id
AND jo.status = 'Active'
AND cj.status=700
GROUP BY c.name
Upvotes: 1
Reputation: 263803
use COUNT()
and GROUP BY
clause,
SELECT c.name, COUNT(cj.joborder_id) TotalCount
FROM company c, joborder jo, candidate_joborder cj
WHERE c.company_id=jo.company_id
AND jo.joborder_id=cj.joborder_id
AND jo.status = 'Active'
AND cj.status=700
GROUP BY c.name
using ANSI JOIN
SELECT c.name,
COUNT(cj.joborder_id) TotalCount
FROM company c
INNER JOIN joborder jo
ON c.company_id = jo.company_id
INNER JOIN candidate_joborder cj
ON jo.joborder_id = cj.joborder_id
WHERE jo.status = 'Active' AND
cj.status=700
GROUP BY c.name
Upvotes: 2