Bonjour,
J'ai besoin de faire des group by sur des sous requete du genre (base EMPLOYE.FDB) :
Sauf que Firebird me retourne :
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
J'ai pensé à ça :expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
sans succès
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
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 :
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.
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
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 ?
Partager