Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Nicolas BERGER
Si je comprends bien la chose, il y a plusieurs enregistrements parfaitement identiques dans la table source, et le but du jeu est de mettre 1 sur le premier. C'est ça? Alors je dirais d'abord que la notion de premier enregistrement rencontré ne veut, dans l'absolu, rien dire sous SQL Server. En effet, SQL Server peut décider de se baser sur tel ou tel index en fonction des statistiques qu'il tient à jour, et que la table origine peut donc, lors d'un select avec telle ou telle clause, se présenter dans "n'importe quel" ordre. Comment alors savoir quel est l'enregistrement sur lequel num doit être mis à 1? S'il y a un champ discriminant, merci donc de le préciser dans ta requête. Si le but est simplement, lorsqu'il y a plusieurs enregistrement identiques, d'en mettre un à '1' sans du tout maîtriser lequel (si on cherche à modifier des enregistrements sans maîtriser la chose à ce point, c'est vraiment qu'il y a un truc qui cloche), alors je te conseille juste de faire un curseur (voir l'instruction DECLARE CURSOR), en INSENSITIVE, et à chaque enregistrement de tester si on n'a pas déjà flagué un enregistrement identique à 1 (par exemple avec un "IF NOT EXISTS ... WHERE num=1 AND ...." ). Mais je le répète, ton besoin, tel que je l'ai compris, est vraiment tordu dans le contexte d'un SGBDR. JN.
"Thierry" a écrit dans le message de news:
bonjour, je cherche a mettre à jour une table de la facon suivante:
J'ai essayé ca mais ca marche pas UPDATE table1 SET num = 1 WHERE (SELECT COUNT(DISTINCT client) FROM Table1 GROUP BY [date])
Si quelqu'un a une idée
Merci d'avance
Thierry
Si je comprends bien la chose, il y a plusieurs enregistrements parfaitement
identiques dans la table source, et le but du jeu est de mettre 1 sur le
premier. C'est ça?
Alors je dirais d'abord que la notion de premier enregistrement rencontré ne
veut, dans l'absolu, rien dire sous SQL Server. En effet, SQL Server peut
décider de se baser sur tel ou tel index en fonction des statistiques qu'il
tient à jour, et que la table origine peut donc, lors d'un select avec telle
ou telle clause, se présenter dans "n'importe quel" ordre. Comment alors
savoir quel est l'enregistrement sur lequel num doit être mis à 1?
S'il y a un champ discriminant, merci donc de le préciser dans ta requête.
Si le but est simplement, lorsqu'il y a plusieurs enregistrement identiques,
d'en mettre un à '1' sans du tout maîtriser lequel (si on cherche à modifier
des enregistrements sans maîtriser la chose à ce point, c'est vraiment qu'il
y a un truc qui cloche), alors je te conseille juste de faire un curseur
(voir l'instruction DECLARE CURSOR), en INSENSITIVE, et à chaque
enregistrement de tester si on n'a pas déjà flagué un enregistrement
identique à 1 (par exemple avec un "IF NOT EXISTS ... WHERE num=1 AND
...." ).
Mais je le répète, ton besoin, tel que je l'ai compris, est vraiment tordu
dans le contexte d'un SGBDR.
JN.
"Thierry" <Thierry@discussions.microsoft.com> a écrit dans le message de
news: 0D15D113-20DF-4004-BFB2-A3893791B3CB@microsoft.com...
bonjour,
je cherche a mettre à jour une table de la facon suivante:
Si je comprends bien la chose, il y a plusieurs enregistrements parfaitement identiques dans la table source, et le but du jeu est de mettre 1 sur le premier. C'est ça? Alors je dirais d'abord que la notion de premier enregistrement rencontré ne veut, dans l'absolu, rien dire sous SQL Server. En effet, SQL Server peut décider de se baser sur tel ou tel index en fonction des statistiques qu'il tient à jour, et que la table origine peut donc, lors d'un select avec telle ou telle clause, se présenter dans "n'importe quel" ordre. Comment alors savoir quel est l'enregistrement sur lequel num doit être mis à 1? S'il y a un champ discriminant, merci donc de le préciser dans ta requête. Si le but est simplement, lorsqu'il y a plusieurs enregistrement identiques, d'en mettre un à '1' sans du tout maîtriser lequel (si on cherche à modifier des enregistrements sans maîtriser la chose à ce point, c'est vraiment qu'il y a un truc qui cloche), alors je te conseille juste de faire un curseur (voir l'instruction DECLARE CURSOR), en INSENSITIVE, et à chaque enregistrement de tester si on n'a pas déjà flagué un enregistrement identique à 1 (par exemple avec un "IF NOT EXISTS ... WHERE num=1 AND ...." ). Mais je le répète, ton besoin, tel que je l'ai compris, est vraiment tordu dans le contexte d'un SGBDR. JN.
"Thierry" a écrit dans le message de news:
bonjour, je cherche a mettre à jour une table de la facon suivante: