Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2011, 16h57   #1
Invité de passage
 
Inscription : août 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 21
Points : 1
Points : 1
Par défaut Update du premier enregistrement correspondant

Bonjour à tous

Etant plutot très débutant sur SQL, j'ai besoin de vos conseils avisés pour la requête suivante :

Sur une table contenant
  • un identifiant unique (Campagne_Id)
  • une date (Campagne_Date)
  • un flag (Campagne_Flag)
je souhaites updater les champs Campagne_Date et Campagne_Flag du premier enregistrement présentant les conditions suivantes :
  • flag is null
  • min(Campagne_Date)
sachant que plusieurs enregistrement peuvent présenter la même date (d'ou le besoin d'updater le PREMIER enregistrement correspondant)

J'ai essayé de caser un "top 1" mais ca n'est pas accepté dans les requêtes UPDATE ...

Quelqu'un peut m'aider ?
SomeoneElseIsHere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 17h36   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour SomeoneElseIsHere,

Le "premier" ne veut rien dire, en soi...

Pouvons-nous considérer que si
Citation:
Envoyé par SomeoneElseIsHere
.../... plusieurs enregistrement peuvent présenter la même date .../...
avec un flag is Null, alors le "premier" de ce groupe est celui dont Campagne_Id le plus petit ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 18h16   #3
Invité de passage
 
Inscription : août 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 21
Points : 1
Points : 1
Salut Richard_35, Merci de ta réponse.
Effectivement, le premier ne veut pas dire grand chose quand on veut translater cela en SQL ...

Le Campagne_Id est défini une fois pour toutes pour chacun des dossiers, en revanche la Campagne_Date est updatée à chaque intervention sur le dossier, c'est donc bien sur cette valeur qu'il faut que je me base, non sur l'Id ...
Cela étant dit, si plusieurs dossiers présentent les deux conditions, je me fiche de savoir lequel va être updaté ...

Des idées ?
SomeoneElseIsHere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 18h57   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Une première requête R1, groupée par Campagne_Date/Campagne_Flag, sélectionnant Min(Campagne_Id), avec des critères de sélection.

Une seconde requête "mise à jour" R2 qui lie R1 à ta table Campagne, via Min(Campagne_Id)=>Campagne_Id avec UPDATE des valeurs que tu souhaites.

Je pense que tu voies l'idée.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h38   #5
Invité de passage
 
Inscription : août 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 21
Points : 1
Points : 1
Merci de ta réponse, et désolé pour mon retour tardif, j'etais en déplacement.

Le problème étant que le champs Campagne_Id n'a rien à voir avec la Campagne_Date, ce dernier pouvant être updaté régulièrement.

Je vais essayer de résumer mon besoin afin de voir si je suis sur la bonne piste ou s'il y a plus simple :

J'ai une base de 100.000 clients
J'ai besoin de faire des campagnes d'appels téléphoniques ciblés sur une (ou plusieurs) partie(s) de ce portefeuille client
J'ai une 10aine de conseillers en charge de cette campagne
Chaque client doit être traité
Est considéré comme traité un client joint (un répondeur, une absence de réponse, etc ... ne sont donc pas considérés comme des evenements sortant le client de la campagne d'appel)
Tant qu'un client n'est pas considéré comme traité, il repasse en bas de la campagne
Un client considéré comme traité sera supprimé de la campagne

La requête dont nous parlons a pour destination d'apposer un flag sur un dossier client permettant au conseiller de s'approprier le dossier le temps de son traitement, ce afin de s'assurer qu'aucun autre gestionnaire ne va le traiter en simultané. Par ailleurs, elle permet d'updater le champs Campagne_Date à la valeur Now() ce afin de repositionner le dossier en fin de campagne.
Bien entendu, dès la fin de traitement du dossier (cad dès que le conseiller change de fiche client), le flag est supprimé libérant ainsi le dossier.
SomeoneElseIsHere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 12h36   #6
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour SomeoneElseIsHere,

Citation:
Envoyé par SomeoneElseIsHere
Le problème étant que le champs Campagne_Id n'a rien à voir avec la Campagne_Date, ce dernier pouvant être updaté régulièrement.
==> oui mais, si un couple Campagne_Date/Campagne_Flag est identique pour plusieurs enregistrements, alors il faut bien en choisir un. Et si
Citation:
Envoyé par SomeoneElseIsHere
Cela étant dit, si plusieurs dossiers présentent les deux conditions, je me fiche de savoir lequel va être updaté ...
==> alors, pas de problème.


Tu sembles faire évoluer ta demande initiale.
Citation:
Envoyé par SomeoneElseIsHere
La requête dont nous parlons a pour destination d'apposer un flag sur un dossier client permettant au conseiller de s'approprier le dossier le temps de son traitement, ce afin de s'assurer qu'aucun autre gestionnaire ne va le traiter en simultané. Par ailleurs, elle permet d'updater le champs Campagne_Date à la valeur Now() ce afin de repositionner le dossier en fin de campagne.
==> la table que tu as présentée :
Citation:
Envoyé par SomeoneElseIsHere
un identifiant unique (Campagne_Id)
une date (Campagne_Date)
un flag (Campagne_Flag)
est, en fait :
  • un identifiant unique (Campagne_Id)
  • l'identifiant du client (Campagne_IdClient)
  • une date (Campagne_Date)
  • un flag (Campagne_Flag)
Tout cela, si j'ai bien compris, évidemment.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h25.


 
 
 
 
Partenaires

Hébergement Web