Requêtes sql en Access avec dates
Forum Programmation : Requêtes sql en Access avec dates
Bonsoir,
Voila j'ai un problème, je n'arrive pas selectionner tous les champs d'une table
en selectionnant un enregistrement parmis plusieurs enregistrements propre à un même ID.
Et ça en fonction de la date la plus récente.
Je m'explique, j'ai deux tables:
TBL_ENQUETES :
ID_ENQUETE ID_CONTACT ID_ASOCIALE ENQ_DATE ENQ_CAT
2 19 2665 1/11/1995 1
3 20 2665 1/11/1996 2
4 21 2663 1/12/1996 2
5 2 2665 1/01/1997 3
6 19 2661 6/11/1998 1
7 11 2665 1/11/1998 1
8 10 2665 7/12/1998 2
9 3 2665 1/04/1999 1
10 4 2665 1/10/1999 1
11 10 2662 1/11/1999 3
12 10 2665 15/11/1999 2
TBL_CONTACTS :
ID_CONTACT CONT_debut CONT_fin
2 1/11/1996
3 11/12/1996 1/11/1998
4 1/11/1997
5 4/11/1997 3/12/1998
6 1/10/1998
7 4/04/1999
8 1/10/1999 1/11/1999
9 1/11/1999
10 12/11/1999 1/11/2000
11 7/06/2000
12 13/04/2001
Chaque ENquête est unique mais peut representer un même contact.
Comment faire pour selectionner le dernier enregistrement (en date )
d'une enquête parmis les eventuels autres enquêtes qu'aurait pu avoir une
même personne et afficher aussi le champ ID_ENQUETE?
Rmq: Il s'agit des contacts dont le champ CONT_fin est nul.
J'ai un code sql:
SELECT TBL_ENQUETES.ID_CONTACT, Max(TBL_ENQUETES.ENQ_DATE) AS ENQ_DATE
FROM TBL_CONTACTS INNER JOIN TBL_ENQUETES ON TBL_CONTACTS.ID_CONTACT = TBL_ENQUETES.ID_CONTACT
GROUP BY TBL_ENQUETES.ID_CONTACT;
Il me sort les enregistrements des dernières dates mais je n'arrive pas
à faire apparaitre le champ ID_ENQUETE associé ?
un autre code:
SELECT TBL_ENQUETES.ID_ENQUETE, TBL_ENQUETES.ID_CONTACT, Max(TBL_ENQUETES.ENQ_DATE) AS ENQ_DATE
FROM TBL_CONTACTS INNER JOIN TBL_ENQUETES ON TBL_CONTACTS.ID_CONTACT = TBL_ENQUETES.ID_CONTACT
GROUP BY TBL_ENQUETES.ID_CONTACT;
mais j'obtient message d'erreur (agregat...)
Comment faire, pouvez vous m'aider?
Pour la suite:
-Je devrais comparer ces dates à la date d'aujourd' hui
et donc calculer une difference de temps et en fonction de la categorie
enquête (ENQ_CAT) si cette difference est supérieur à 6 mois ou 1 an
faire un message d'alerte pour faire une nouvelles equête pour les contacts
concernés.
-Ensuite par regroupement envoyer le résultats avec les coordonnées et
dernière date d'enquête des personnes vers un rapport pour Inmpression.
Merci beaucoup
bonjour Alibuzzer
votre message sur tom's guide date de 2006 et peut être avez vous trouver la réponse.
Je recherche à faire la même requete, si vous avez trouver la solution pourriez vous m'aider ?
je dois dans une requete qui contient plusieurs fois le meme id contact et plusieurs dates retrouver l'enregistrement de la date la plus ancienne. C'est exactement ce que vous aviez demander à l'époque.
Merci d'avance
Par rapport à sa dernière requête, il fallait peut-être déplacer la fonction d'agrégation Max(...) dans un HAVING.
http://msdn.microsoft.com/en-us/li [...] ntsanchor2
Code :
|
(non testé)
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Merci pour votre réponse mais ca ne fonctionne pas
vois ma requete
Code :
|
Je n'arrive pas à écrire le HAVING en question, lorsque je l'ajoute directement dans le sql, il me répond qu'il manque un opérateur
merci CRicky
isabelle
Je pense que le having attend une condition. Et en ajoutant ce qui suit ?
Code :
|
Sinon, avec ta requête de base, quelle erreur est retournée?
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
bonsoir,
j'y suis de depuis ce matin et je ne m'en sors pas...
en fait il n'y a pas d'erreur retournée mais il ne me renvoit pas juste la ligne de la demande la plus récente
comme j'ai des conditions vrai faux dans vkbis vurssaf etc... il me rajoute toutes les lignes
En fait j'enregistre la date du kbis du sous traitant dans la T_SOUSTRAITANT
Le kbis n'est valable que 6 mois aussi en fonction du chantier qu'il va faire, j'effectue un calcul (très savant)
pour qu'il affiche, "ok", ou "à renouveler" c'est le champ [ckbis] avec (c pour calcul) 'dans une requete
puis je demande au sous traitant via une demande de docs (si son kbis est périmé) en cochant une autre case nommée 'dkbis' (d pour demande) - il peut y avoir plusieurs demandes, mais celle qui m'intéresse est la plus récente
Je reprends l'ensemble Kbis, ckbis et dkbis dans une requete et Si [dkbis] est coché, je demande dans un champ calcul [Vkbis] (v pour validation) d'afficher "En Attente St", ou la valeur de ckbis
Il se peut donc que la valeur de ckbis passe de "ok" à "a renouveler" dans l'intervalle entre ma dernière demande et aujourd'hui. C'est cela que je veux surveiller.
dans ma requete je souhaite afficher si le kbis est à renouveler entre ma dernière demande de docs et aujourd'hui (car il arrive souvent que le sous traitant mette du temps à renvoyer ses documents) et de m'avertir en affichant les documents à renouveler que je n'aurais pas demander
malheureusement je pense qu'il faut que je lui indique que je veux la date de la dernière demande dans le critére de la requete (dans la grille opération) j'ai essayé avec max, mais ca ne fonctionne toujours pas
désolée d'avoir été si longue et merci à toi
c'est le meme procédé pour urssaf, congés payés....
est ce que tu comprends ce que je veux expliquer ?
La base de données et correcte ? tu peux tester sur une fausse petite base.
Au pire, tu peux ça en 2 commandes SELECT : une pour récupérer le MAX et l'autre pour sélectionner selon le MAX.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
C'est ce que j'ai fait je viens de trouver à l'instant
j'ai regrouper tout mes champs à renouveler dans un seul avec dans la requete
si kbis est à renouveler, alors " renouveler", si urssaf est à renouveler alors "renouveler".....
et j'ai refait un max sur la date
eh bien, il en aura fallu du temps
mais n'est_il pas possible de faire une rechdom par exemple sur la date et l'écrire dans le critère ?
je pense que cela aurait été plus simple non ?
pb c'est que je ne sais pas l'écrire
merci de ton encouragement et ton aide
Je ne connais pas rechdom. A voir au niveau des performances (peut-être mieux comme pire).
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Merci de ton aide
je finirais bien par le trouver
mais pour le moment ca marche
bon dimanche
Merci de ton aide
je finirai bien par le trouver
mais pour le moment ca marche
bon dimanche
Il y a 1370 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
