Заменит первые
INNER JOIN
сек на
RIGHT JOIN
/
LEFT JOIN
:
SELECT normesTypesDemande.choix AS nomTypeDemande,
normesLois.choix AS nomLoi,
COUNT(*) as nbDemandes
FROM ((gestionDemandes.typeNormes
RIGHT JOIN gestionDemandes.normesLois
ON typeNormes.loi = normesLois.id)
LEFT JOIN gestionDemandes.normesTypesDemande
ON typeNormes.typeDemande = normesTypesDemande.id)
LEFT JOIN gestionDemandes.demandes
ON typeNormes.demande = demandes.id
GROUP BY normesTypesDemande.choix, normesLois.choix
ORDER BY normesTypesDemande.choix
Из-за этого INNER JOIN
и нет соответствующих строк для подсчета Comité - SAE
, например, INNER JOIN
будет фильтровать строку SAE
.
Изменение этого параметра на
RIGHT JOIN
будет гарантировать, что данные не будут удалены из
normesLois
, и вы должны иметь счет
0
.
Update:
Ну, не самый изящный, но вот решение:
SELECT nomTypeDemande
, choix
, sum(nbDemandes) AS nbDemandes
FROM (
SELECT r.nomTypeDemande
, nl.choix
, CASE
WHEN r.nomLoi = nl.choix
THEN sum(r.nbDemandes)
ELSE 0
END AS nbDemandes
FROM (
SELECT normesTypesDemande.choix AS nomTypeDemande
, normesLois.choix AS nomLoi
, COUNT(typeNormes.id) AS nbDemandes
FROM normesLois
FULL JOIN typeNormes
ON typeNormes.loi = normesLois.id
FULL JOIN normesTypesDemande
ON typeNormes.typeDemande = normesTypesDemande.id
GROUP BY normesTypesDemande.choix
, normesLois.choix
) r
CROSS JOIN normesLois nl
GROUP BY r.nomTypeDemande
, nl.choix
, r.nomLoi
) r
GROUP BY nomTypeDemande
, choix
ORDER BY nomTypeDemande
, choix
привет сэр, я попытался это, но не разница вообще ... :( – Patix80
@ Patix80 Можете ли вы повторить сейчас? –
Да, я еще раз попробовал, но тот же результат ... Есть (0), например, – Patix80