{SQL Server} requete HAVING

Résolu/Fermé
cedvip Messages postés 22 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 15 juillet 2010 - 23 nov. 2009 à 15:47
cedvip Messages postés 22 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 15 juillet 2010 - 23 nov. 2009 à 18:17
Bonjour, volai mon problème, j'ai deux tables, une où j'ai le nom des clients, et l'autre le nombre de fois où je les ai appelés. voici la requête que je viens de faire pour récupère le numéro clients ainsi que le le nombre de fois ou je les ai appelés en sachant que je veut seulement ceux que j'ai appelé plus de 4 fois :

select
table1.id_action,table1.id_clients, count(Table2.id_clients)
as appelles
from Table1
left join table2 on table1.id_clients=table2.id_clients
where clients.etat='SELECTED' and table1.id_clients like '%2009-%' and table1.resultat in ('NRP', 'RAPPEL')
group by table1.id_action, table1.id_clients
having (((count(table2.id_clients))>4))
order by table1.id_action, appelles

cette requette marche nickel et je récupère ca :

client------n°client-------appelés
dupons------ 456877-------6
dupuis------ 456878-------8
pierre------ 456874-------9

et j'aimerais pouvoir maintenant mette les fiches de la table 1 en etat='stop' quant le appelés>4
voila ce que j'ai fait :

update Table1 set etat='STOP T' where id_clients in(
table1.id_clients, count(Table2.id_clients)
from Table1
left join table2 on table1.id_clients=table2.id_clients
where clients.etat='SELECTED' and table1.id_clients like '%2009-%' and table1.resultat in ('NRP', 'RAPPEL')
group by table1.id_clients
having (((count(table2.id_clients))>4)))

et voila l'erreur que ca me donne : Msg 116, Niveau 16, État 1, Ligne 1
Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par EXISTS.

Merci a vous si vous avez déjà pris la peine de lire tout ca... Si vous avez une solution je suis preneur
A voir également:

1 réponse

cedvip Messages postés 22 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 15 juillet 2010 6
23 nov. 2009 à 18:17
pffffff je suis top bête j'ai trouver la réponse tout seul, c'était tellement évident que je ne l'ai pas vu.


update Table1 set etat='STOP T' where id_clients in(select
table1.id_clients
from Table1
left join table2 on table1.id_clients=table2.id_clients
where clients.etat='SELECTED' and table1.id_clients like '%2009-%' and table1.resultat in ('NRP', 'RAPPEL')
group by table1.id_clients
having (((count(table2.id_clients))>4)))

et voila ca marche, les lignes sont modifiées .... sauf que lol j'ai ca comme message :
"Avertissement : la valeur nulle est éliminée par un agrégat ou par une autre opération définie."

et je sais pas pourquoi
1