{SQL Server} requete HAVING
Résolu
cedvip
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
cedvip Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
cedvip Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
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
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:
- {SQL Server} requete HAVING
- Cybera server - Télécharger - Divers Réseau & Wi-Fi
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Filezilla server - Télécharger - Téléchargement & Transfert
- Mysql community server - Télécharger - Bases de données
- Typsoft ftp server - Télécharger - Téléchargement & Transfert
1 réponse
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
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