Je dois écrire une requête qui renvoie le nom de la société et le numéro des commandes de travail particulières que cette société possède.
À l'heure actuelle, ma requête est la suivante:
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;
Ceci retourne le tableau suivant:
Name | Job Order ID
X | 1874
Y | 2003
Y | 2003
Z | 2001
Ce que je veux c'est:
Name | Count
X | 1
Y | 2
Z | 1
Quelqu'un peut il m'aider avec ça?
Merci
Réponses:
2 pour la réponse № 1La requête que vous voulez est la suivante:
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;
Je suggère les références suivantes pour l’agrégation SQL et plus précisément le groupe par et le nombre:
- http://www.youtube.com/watch?v=fSH1jpV2nNs
- http://www.w3resource.com/sql/aggregate-functions/count-with-group-by.php
2 pour la réponse № 2
utilisation COUNT()
et 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
en utilisant 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 pour la réponse № 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