Bonjour,

J'ai besoin de faire des group by sur des sous requete du genre (base EMPLOYE.FDB) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select count(PROJ_ID), (select FIRST_NAME from EMPLOYEE where EMP_NO=TEAM_LEADER)
from PROJECT
group by 2
Sauf que Firebird me retourne :
expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
J'ai pensé à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select count(PROJ_ID), (select  (select FIRST_NAME from EMPLOYEE where EMP_NO=TEAM_LEADER) from RDB$DATABASE)
from PROJECT
group by 2
sans succès

Bien sur la solution consiste à utiliser un left join. Sauf que dans mon cas c'est compliqué car ma sous requête peut être créé par mon utilisateur final :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
select count(PROJ_ID), FIRST_NAME
from PROJECT
left join  EMPLOYEE on EMP_NO=TEAM_LEADER
group by 2
J'utilise actuellement Firebird 3, mais j'utilise Firebird depuis très longtemps mais je n'ai jamais compris pourquoi Firebird refusait les group by sur des sous requête surtout que ça marche en SQLITE (je sais ce n'est pas une référence en SQL). J'ai espéré un mieux sur Firebird 2 puis 3 puis 4.
Je pense comprendre que le problème viendrait du faire Firebird n'arrive pas à associer le count au champ du group by.
Mais une idée sans passer par un left join ?