Bonjour a tous,
Voici mon premier problème du jour : réaliser un count(*) sur une requête comprenant un group by
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part select count(*) from masupd_attr where id_op = 150 group by dn
me renvoyai 5 ligne avec le nombre de dn correspondant alors que je souhaitai justement récupérer le nombre de lignes renvoyer (5)
j'ai donc écrit ceci
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part select count(*) from (select dn from masupd_attr where id_op = 150 group by dn);
qui fonctionne parfaitement bien.
Le problème est que cette requête est destinée a être une sous requête d'une requête plus grosse et que le le id_op (150) doit être en réalité une colonne dans la requête principale (je crains de mal m'exprimer il y a surement un nom pour cela mais je ne le connais pas) voici l'exemple.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT op.id,op.user_dn,op.date_op,wmsys.wm_concat(distinct attr.attr) as attr, (select count (*) from (select dn from masupd_attr where id_op = op.id group by dn)) as nb_user FROM masupd_op op INNER JOIN masupd_attr attr ON op.id = attr.id_op WHERE id IN (SELECT id_op FROM masupd_attr WHERE attr = 'c' OR attr = 'telephonenumber' GROUP BY id_op) HAVING op.user_DN LIKE '%ocs%' GROUP BY op.id,op.user_dn,op.date_op ORDER BY op.id;
lorsque j'utilise une seul sous requête (premier cas qui malheureusement ne fonctionnai pas) j'ai le droit d'utiliser op.id, mais lorsqu'il y a 2 sous requête la "variable" n'est plus disponible.
Voyez vous une solution ? je m'y prend peut être très mal et la solution est peut être évidente mais je ne trouve pas rien y fais.
Partager