/ / Liczenie liczby zleceń na firmę - mysql, sql

Licząc liczbę zleceń na firmę - mysql, sql

Muszę napisać zapytanie, które zwróci nazwę firmy i liczbę poszczególnych zleceń pracy, które firma ma.

W tej chwili moje zapytanie jest takie:

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;

Zwraca następującą tabelę:

Name | Job Order ID
X    | 1874
Y    | 2003
Y    | 2003
Z    | 2001

To, czego chcę, to:

Name | Count
X    | 1
Y    | 2
Z    | 1

Czy ktoś może mi w tym pomóc?

Dzięki

Odpowiedzi:

2 dla odpowiedzi № 1

Zapytanie, które chcesz, jest następujące:

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;

Sugeruję następujące odwołania do agregacji SQL, a konkretnie grupowanie według i liczenie:


2 dla odpowiedzi nr 2

posługiwać się COUNT() i GROUP BY klauzula,

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

za pomocą 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

1 dla odpowiedzi nr 3
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