N'étant pas un véritable pro des requêtes SQL je me permet de faire appel aux
experts pour m'aider pour faire une petite requête :)
Situation : Mettre à jour les compteurs d'un forum
2 tables :
+ Posts : Avec champ MemberID
+ Membres : Avec champ MemberID également
Chose à réaliser :
Compter les posts ayant le même MemberID afin de mettre à jour le nombre de
posts réalisés par un membre (MemberID) ... le tout pour mettre à jour
automatiquement le nombre de messages posté par chaque membre.
Voilà j'espère qu'un sympathique membre de ce newsgroup aura pitié de moi :)
--
Christophe - MVP Windows Mobile
http://www.windows-mobile.info/
déjà ça te donnera le nombre de poste de chaque membre.
Par contre pour le faire automatiquement il faut savoir si tu veux faire un trigger ou une PS qui tourne toutes les X minutes
"Christophe Cordonnier"
a écrit dans le message de news:
N'étant pas un véritable pro des requêtes SQL je me permet de faire appel
aux
experts pour m'aider pour faire une petite requête :)
Situation : Mettre à jour les compteurs d'un forum 2 tables : + Posts : Avec champ MemberID + Membres : Avec champ MemberID également
Chose à réaliser : Compter les posts ayant le même MemberID afin de mettre à jour le nombre
de
posts réalisés par un membre (MemberID) ... le tout pour mettre à jour automatiquement le nombre de messages posté par chaque membre.
Voilà j'espère qu'un sympathique membre de ce newsgroup aura pitié de moi
:)
-- Christophe - MVP Windows Mobile http://www.windows-mobile.info/
jgabillaud
Si la modification de la tables des membres à lieu lors de chaque insertion ds la table des posts, alors il est possible d'automatiser à l'iade d'un déclencheur du style:
create trigger majMembres on Posts AFTER INSERT as begin declare @numeroMembre as int select @numeroMembre=membreId FROM Inserted update membres set nombre=nombre+1 where membres.membreId=@numeroMembre end
"jeorme" a écrit :
salut je pense que :
SELECT memberID, count(*) as nb_post FROM post
déjà ça te donnera le nombre de poste de chaque membre.
Par contre pour le faire automatiquement il faut savoir si tu veux faire un trigger ou une PS qui tourne toutes les X minutes
"Christophe Cordonnier"
a écrit dans le message de news: > N'étant pas un véritable pro des requêtes SQL je me permet de faire appel aux > experts pour m'aider pour faire une petite requête :) > > Situation : Mettre à jour les compteurs d'un forum > 2 tables : > + Posts : Avec champ MemberID > + Membres : Avec champ MemberID également > > Chose à réaliser : > Compter les posts ayant le même MemberID afin de mettre à jour le nombre de > posts réalisés par un membre (MemberID) ... le tout pour mettre à jour > automatiquement le nombre de messages posté par chaque membre. > > Voilà j'espère qu'un sympathique membre de ce newsgroup aura pitié de moi :) > > -- > Christophe - MVP Windows Mobile > http://www.windows-mobile.info/
Si la modification de la tables des membres à lieu lors de chaque insertion
ds la table des posts, alors il est possible d'automatiser à l'iade d'un
déclencheur du style:
create trigger majMembres on Posts
AFTER INSERT
as
begin
declare @numeroMembre as int
select @numeroMembre=membreId FROM Inserted
update membres set nombre=nombre+1 where membres.membreId=@numeroMembre
end
"jeorme" a écrit :
salut
je pense que :
SELECT memberID, count(*) as nb_post
FROM post
déjà ça te donnera le nombre de poste de chaque membre.
Par contre pour le faire automatiquement il faut savoir si tu veux faire un
trigger ou une PS qui tourne toutes les X minutes
"Christophe Cordonnier"
<ChristopheCordonnier@discussions.microsoft.com> a écrit dans le message de
news: D2B123D4-D1F3-4FC5-8FD8-8C125433C522@microsoft.com...
> N'étant pas un véritable pro des requêtes SQL je me permet de faire appel
aux
> experts pour m'aider pour faire une petite requête :)
>
> Situation : Mettre à jour les compteurs d'un forum
> 2 tables :
> + Posts : Avec champ MemberID
> + Membres : Avec champ MemberID également
>
> Chose à réaliser :
> Compter les posts ayant le même MemberID afin de mettre à jour le nombre
de
> posts réalisés par un membre (MemberID) ... le tout pour mettre à jour
> automatiquement le nombre de messages posté par chaque membre.
>
> Voilà j'espère qu'un sympathique membre de ce newsgroup aura pitié de moi
:)
>
> --
> Christophe - MVP Windows Mobile
> http://www.windows-mobile.info/
Si la modification de la tables des membres à lieu lors de chaque insertion ds la table des posts, alors il est possible d'automatiser à l'iade d'un déclencheur du style:
create trigger majMembres on Posts AFTER INSERT as begin declare @numeroMembre as int select @numeroMembre=membreId FROM Inserted update membres set nombre=nombre+1 where membres.membreId=@numeroMembre end
"jeorme" a écrit :
salut je pense que :
SELECT memberID, count(*) as nb_post FROM post
déjà ça te donnera le nombre de poste de chaque membre.
Par contre pour le faire automatiquement il faut savoir si tu veux faire un trigger ou une PS qui tourne toutes les X minutes
"Christophe Cordonnier"
a écrit dans le message de news: > N'étant pas un véritable pro des requêtes SQL je me permet de faire appel aux > experts pour m'aider pour faire une petite requête :) > > Situation : Mettre à jour les compteurs d'un forum > 2 tables : > + Posts : Avec champ MemberID > + Membres : Avec champ MemberID également > > Chose à réaliser : > Compter les posts ayant le même MemberID afin de mettre à jour le nombre de > posts réalisés par un membre (MemberID) ... le tout pour mettre à jour > automatiquement le nombre de messages posté par chaque membre. > > Voilà j'espère qu'un sympathique membre de ce newsgroup aura pitié de moi :) > > -- > Christophe - MVP Windows Mobile > http://www.windows-mobile.info/
Christophe Cordonnier
Merci pour vos réponses mais ce que je recherche est juste une belle requête pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste pouvoir effectuer la chose en une seule requête ... chose que je pense possible :)
Pour avoir le nombre de posts : SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre : UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est possible de mettre à jour toute la table Membre par une simple requête ... trop compliquée pour moi :)
Merci pour vos réponses mais ce que je recherche est juste une belle requête
pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans
certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à
jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste
pouvoir effectuer la chose en une seule requête ... chose que je pense
possible :)
Pour avoir le nombre de posts :
SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre :
UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est
possible de mettre à jour toute la table Membre par une simple requête ...
trop compliquée pour moi :)
Merci pour vos réponses mais ce que je recherche est juste une belle requête pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste pouvoir effectuer la chose en une seule requête ... chose que je pense possible :)
Pour avoir le nombre de posts : SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre : UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est possible de mettre à jour toute la table Membre par une simple requête ... trop compliquée pour moi :)
lamhamji
Bonjour,
Je ne suis pas certain qu'une telle requête soit possible puisqu'il faut mettre à jour toutes les lignes d'un champ, donc il y a un problème dans la clause WHERE... C'est peut-être faisable en cherchant bien, mais sinon en crééant une procédure stockée ça marche très bien :
CREATE PROCEDURE CountPosts AS DECLARE c CURSOR FOR SELECT memberid FROM membres; DECLARE @mid INT; BEGIN OPEN c; FETCH NEXT FROM c INTO @mid; WHILE @@FETCH_STATUS = 0 BEGIN UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts WHERE memberid=@mid) WHERE memberid=@mid; FETCH NEXT FROM c INTO @mid; END CLOSE c; DEALLOCATE c; END
Ensuite pour l'exécuter il suffit de taper la requête EXEC countposts; C'est même plus simple que d'essayer de se souvenir de la requête chaque mois ;-)
Cordialement
"Christophe Cordonnier" wrote in message news:
Merci pour vos réponses mais ce que je recherche est juste une belle requête pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste pouvoir effectuer la chose en une seule requête ... chose que je pense possible :)
Pour avoir le nombre de posts : SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre : UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est possible de mettre à jour toute la table Membre par une simple requête ... trop compliquée pour moi :)
Bonjour,
Je ne suis pas certain qu'une telle requête soit possible puisqu'il faut
mettre à jour toutes les lignes d'un champ, donc il y a un problème dans la
clause WHERE...
C'est peut-être faisable en cherchant bien, mais sinon en crééant une
procédure stockée ça marche très bien :
CREATE PROCEDURE CountPosts AS
DECLARE c CURSOR FOR SELECT memberid FROM membres;
DECLARE @mid INT;
BEGIN
OPEN c;
FETCH NEXT FROM c INTO @mid;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts WHERE
memberid=@mid) WHERE memberid=@mid;
FETCH NEXT FROM c INTO @mid;
END
CLOSE c;
DEALLOCATE c;
END
Ensuite pour l'exécuter il suffit de taper la requête EXEC countposts;
C'est même plus simple que d'essayer de se souvenir de la requête chaque
mois ;-)
Cordialement
"Christophe Cordonnier" <ChristopheCordonnier@discussions.microsoft.com>
wrote in message news:F11F7AD4-58F0-4EA6-BAA6-CCC3DAED655D@microsoft.com...
Merci pour vos réponses mais ce que je recherche est juste une belle
requête
pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans
certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à
jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste
pouvoir effectuer la chose en une seule requête ... chose que je pense
possible :)
Pour avoir le nombre de posts :
SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre :
UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il
est
possible de mettre à jour toute la table Membre par une simple requête ...
trop compliquée pour moi :)
Je ne suis pas certain qu'une telle requête soit possible puisqu'il faut mettre à jour toutes les lignes d'un champ, donc il y a un problème dans la clause WHERE... C'est peut-être faisable en cherchant bien, mais sinon en crééant une procédure stockée ça marche très bien :
CREATE PROCEDURE CountPosts AS DECLARE c CURSOR FOR SELECT memberid FROM membres; DECLARE @mid INT; BEGIN OPEN c; FETCH NEXT FROM c INTO @mid; WHILE @@FETCH_STATUS = 0 BEGIN UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts WHERE memberid=@mid) WHERE memberid=@mid; FETCH NEXT FROM c INTO @mid; END CLOSE c; DEALLOCATE c; END
Ensuite pour l'exécuter il suffit de taper la requête EXEC countposts; C'est même plus simple que d'essayer de se souvenir de la requête chaque mois ;-)
Cordialement
"Christophe Cordonnier" wrote in message news:
Merci pour vos réponses mais ce que je recherche est juste une belle requête pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste pouvoir effectuer la chose en une seule requête ... chose que je pense possible :)
Pour avoir le nombre de posts : SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre : UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est possible de mettre à jour toute la table Membre par une simple requête ... trop compliquée pour moi :)
Christophe Cordonnier
Un très grand merci :) Je sais que ce serait assez simple en syntaxe mais pour une personne plus compétente que moi :)
Reste pour moi à tester sur ma base de Test :)
"brouardf" a écrit :
Une seule requête sans procédure ni curseur suffit largement : UPDATE membres FROM membres M SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid) A +
Un très grand merci :)
Je sais que ce serait assez simple en syntaxe mais pour une personne plus
compétente que moi :)
Reste pour moi à tester sur ma base de Test :)
"brouardf" a écrit :
Une seule requête sans procédure ni curseur suffit largement :
UPDATE membres
FROM membres M
SET nbposts=(SELECT COUNT(*)
FROM posts P
WHERE P.memberid=M.memberid)
A +
Un très grand merci :) Je sais que ce serait assez simple en syntaxe mais pour une personne plus compétente que moi :)
Reste pour moi à tester sur ma base de Test :)
"brouardf" a écrit :
Une seule requête sans procédure ni curseur suffit largement : UPDATE membres FROM membres M SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid) A +
Christophe Cordonnier
Pour terminé merci beaucoup car ça fonctionne parfaitement. Une requête que je lance donc tous les jours pour mettre à jour la base concernée ... pour pallier aux bugs de ce forum :)
Pour infos la syntaxe exacte : UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid) FROM membres M
"brouardf" a écrit :
Une seule requête sans procédure ni curseur suffit largement : UPDATE membres FROM membres M SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid)
Pour terminé merci beaucoup car ça fonctionne parfaitement. Une requête que
je lance donc tous les jours pour mettre à jour la base concernée ... pour
pallier aux bugs de ce forum :)
Pour infos la syntaxe exacte :
UPDATE membres
SET nbposts=(SELECT COUNT(*)
FROM posts P
WHERE P.memberid=M.memberid)
FROM membres M
"brouardf" a écrit :
Une seule requête sans procédure ni curseur suffit largement :
UPDATE membres
FROM membres M
SET nbposts=(SELECT COUNT(*)
FROM posts P
WHERE P.memberid=M.memberid)
Pour terminé merci beaucoup car ça fonctionne parfaitement. Une requête que je lance donc tous les jours pour mettre à jour la base concernée ... pour pallier aux bugs de ce forum :)
Pour infos la syntaxe exacte : UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid) FROM membres M
"brouardf" a écrit :
Une seule requête sans procédure ni curseur suffit largement : UPDATE membres FROM membres M SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid)
brouardf
Une seule requête sans procédure ni curseur suffit largement :
UPDATE membres FROM membres M SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid)
A +
lamhamji a écrit :
Bonjour,
Je ne suis pas certain qu'une telle requête soit possible puisqu'il faut mettre à jour toutes les lignes d'un champ, donc il y a un problème dans la clause WHERE... C'est peut-être faisable en cherchant bien, mais sinon en crééant une procédure stockée ça marche très bien :
CREATE PROCEDURE CountPosts AS DECLARE c CURSOR FOR SELECT memberid FROM membres; DECLARE @mid INT; BEGIN OPEN c; FETCH NEXT FROM c INTO @mid; WHILE @@FETCH_STATUS = 0 BEGIN UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts WHERE memberid=@mid) WHERE memberid=@mid; FETCH NEXT FROM c INTO @mid; END CLOSE c; DEALLOCATE c; END
Ensuite pour l'exécuter il suffit de taper la requête EXEC countposts; C'est même plus simple que d'essayer de se souvenir de la requête chaque mois ;-)
Cordialement
"Christophe Cordonnier" wrote in message news:
Merci pour vos réponses mais ce que je recherche est juste une belle requête pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste pouvoir effectuer la chose en une seule requête ... chose que je pense possible :)
Pour avoir le nombre de posts : SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre : UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est possible de mettre à jour toute la table Membre par une simple requête ... trop compliquée pour moi :)
Une seule requête sans procédure ni curseur suffit largement :
UPDATE membres
FROM membres M
SET nbposts=(SELECT COUNT(*)
FROM posts P
WHERE P.memberid=M.memberid)
A +
lamhamji a écrit :
Bonjour,
Je ne suis pas certain qu'une telle requête soit possible puisqu'il faut
mettre à jour toutes les lignes d'un champ, donc il y a un problème dans la
clause WHERE...
C'est peut-être faisable en cherchant bien, mais sinon en crééant une
procédure stockée ça marche très bien :
CREATE PROCEDURE CountPosts AS
DECLARE c CURSOR FOR SELECT memberid FROM membres;
DECLARE @mid INT;
BEGIN
OPEN c;
FETCH NEXT FROM c INTO @mid;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts WHERE
memberid=@mid) WHERE memberid=@mid;
FETCH NEXT FROM c INTO @mid;
END
CLOSE c;
DEALLOCATE c;
END
Ensuite pour l'exécuter il suffit de taper la requête EXEC countposts;
C'est même plus simple que d'essayer de se souvenir de la requête chaque
mois ;-)
Cordialement
"Christophe Cordonnier" <ChristopheCordonnier@discussions.microsoft.com>
wrote in message news:F11F7AD4-58F0-4EA6-BAA6-CCC3DAED655D@microsoft.com...
Merci pour vos réponses mais ce que je recherche est juste une belle
requête
pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans
certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à
jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste
pouvoir effectuer la chose en une seule requête ... chose que je pense
possible :)
Pour avoir le nombre de posts :
SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre :
UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il
est
possible de mettre à jour toute la table Membre par une simple requête ...
trop compliquée pour moi :)
Une seule requête sans procédure ni curseur suffit largement :
UPDATE membres FROM membres M SET nbposts=(SELECT COUNT(*) FROM posts P WHERE P.memberid=M.memberid)
A +
lamhamji a écrit :
Bonjour,
Je ne suis pas certain qu'une telle requête soit possible puisqu'il faut mettre à jour toutes les lignes d'un champ, donc il y a un problème dans la clause WHERE... C'est peut-être faisable en cherchant bien, mais sinon en crééant une procédure stockée ça marche très bien :
CREATE PROCEDURE CountPosts AS DECLARE c CURSOR FOR SELECT memberid FROM membres; DECLARE @mid INT; BEGIN OPEN c; FETCH NEXT FROM c INTO @mid; WHILE @@FETCH_STATUS = 0 BEGIN UPDATE membres SET nbposts=(SELECT COUNT(*) FROM posts WHERE memberid=@mid) WHERE memberid=@mid; FETCH NEXT FROM c INTO @mid; END CLOSE c; DEALLOCATE c; END
Ensuite pour l'exécuter il suffit de taper la requête EXEC countposts; C'est même plus simple que d'essayer de se souvenir de la requête chaque mois ;-)
Cordialement
"Christophe Cordonnier" wrote in message news:
Merci pour vos réponses mais ce que je recherche est juste une belle requête pour recaler les billes de mon forum ... disons une fois par mois :)
Globalement le nombre de messages est mis à jour parfaitement mais dans certains cas ces chiffres ne sont pas mis à jour.
Je recherche donc une requête simple qui puisse me permettre de mettre à jour toutes les semaines les bons chiffres :)
En 2 requêtes j'arrive à le faire pour chaque membre mais j'aimerais juste pouvoir effectuer la chose en une seule requête ... chose que je pense possible :)
Pour avoir le nombre de posts : SELECT MemberID, count(*) as nb_post FROM posts
Pour mettre à jour le membre : UPDATE Membres set NBPosts=X where MemberID=Y
X & Y étant récupérables dans la première requête je suis certain qu'il est possible de mettre à jour toute la table Membre par une simple requête ... trop compliquée pour moi :)