OVH Cloud OVH Cloud

requête sur la date la plus récente

10 réponses
Avatar
LouisPat
Bonjour!

Je créée une base de données sur les bornes d'incendie d'une ville. Dans une
table, j'ai stocké les caractéristiques de cette borne, et dans une autre
table, j'ai un historique d'interventions faites par des employés sur cette
borne fontaine (plusieurs interventions faites à différentes date).

je voudrais savoir s'il y a moyen de faire une requête qui m'afficherait les
bornes d'incendie non fonctionnelles depuis leur vérification la plus
récente-> une requête selon la date la plus récente ??

Par exemple, j'ai un champ yes/no fonctionnelle (borne laissée fonctionnelle
ou non après l'intervention des employés) dans mon historique. Je veux que ma
requête m'affiche les bornes non-fonctionnelles à dernière date... Si elle
était nonfonctionnelle le 2000-06-06 mais qu'elle a été réparée en 2003 et
laissée fonctionnelle, je ne veux pas que celle-ci apparaisse dans ma
requête...

Quelqu'un a une idée?
je vous remercie beaucoup...
Louis Pat

10 réponses

Avatar
Gafish
LouisPat wrote:
Bonjour!


Bonjour,

Je créée une base de données sur les bornes d'incendie d'une ville.
Dans une table, j'ai stocké les caractéristiques de cette borne, et
dans une autre table, j'ai un historique d'interventions faites par
des employés sur cette borne fontaine (plusieurs interventions faites
à différentes date).

je voudrais savoir s'il y a moyen de faire une requête qui
m'afficherait les bornes d'incendie non fonctionnelles depuis leur
vérification la plus récente-> une requête selon la date la plus
récente ??


Fais toi une nouvelle requête, ajoute ta ou tes tables, et ajoute tes
champs, avec tout à gauche l'identifiant d'une borne et ensuite à sa droite
la date. Clique sur le sigma (bouton opération) dans la barre de menu.
Ensuite, pour le champ borne, dans la ligne opération tu choisis
"regroupement" et sur le champ date, tu choisis "maximum".
Tu ajoutes aussi la case "opérationnelle" et pour celle ci tu choisis "ou"
en opération et tu mets 0 en critère.

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Samlepirate
Dans ta requete il y a un tri que tu peux faire sur le [champ] date
(décroissant) ensuite ton formulaire n'indiquera que cette dernière date et
les enregistrements correspondant si tu est en mode "unique" et si tu ne veux
jamais "voir" les autres, coche "aucun" sur les "boutons de déplacements" en
mode céation de ton formulaire.... et le tour est joué :-)



Bonjour!

Je créée une base de données sur les bornes d'incendie d'une ville. Dans une
table, j'ai stocké les caractéristiques de cette borne, et dans une autre
table, j'ai un historique d'interventions faites par des employés sur cette
borne fontaine (plusieurs interventions faites à différentes date).

je voudrais savoir s'il y a moyen de faire une requête qui m'afficherait les
bornes d'incendie non fonctionnelles depuis leur vérification la plus
récente-> une requête selon la date la plus récente ??

Par exemple, j'ai un champ yes/no fonctionnelle (borne laissée fonctionnelle
ou non après l'intervention des employés) dans mon historique. Je veux que ma
requête m'affiche les bornes non-fonctionnelles à dernière date... Si elle
était nonfonctionnelle le 2000-06-06 mais qu'elle a été réparée en 2003 et
laissée fonctionnelle, je ne veux pas que celle-ci apparaisse dans ma
requête...

Quelqu'un a une idée?
je vous remercie beaucoup...
Louis Pat


Avatar
Fred Pasc
Bonjour Gafish,

"Gafish" a écrit:
Fais toi une nouvelle requête, ajoute ta ou tes tables, et ajoute tes
champs, avec tout à gauche l'identifiant d'une borne et ensuite à sa
droite

la date. Clique sur le sigma (bouton opération) dans la barre de menu.
Ensuite, pour le champ borne, dans la ligne opération tu choisis
"regroupement" et sur le champ date, tu choisis "maximum".
Tu ajoutes aussi la case "opérationnelle" et pour celle ci tu choisis "ou"
en opération et tu mets 0 en critère.


Juste par curiosité, ça donne quoi comme syntaxe en SQL?
Merci d'avance (si tu as le temps)
A+
Fred

Avatar
Gafish
Fred Pasc wrote:
Bonjour Gafish,

"Gafish" a écrit:
Fais toi une nouvelle requête, ajoute ta ou tes tables, et ajoute tes
champs, avec tout à gauche l'identifiant d'une borne et ensuite à sa
droite la date. Clique sur le sigma (bouton opération) dans la barre
de menu. Ensuite, pour le champ borne, dans la ligne opération tu
choisis "regroupement" et sur le champ date, tu choisis "maximum".
Tu ajoutes aussi la case "opérationnelle" et pour celle ci tu
choisis "ou" en opération et tu mets 0 en critère.


Juste par curiosité, ça donne quoi comme syntaxe en SQL?
Merci d'avance (si tu as le temps)
A+
Fred



Dès que tu fais des regroupements, cela va utiliser la clause sql GROUP BY.
Pour le maximum, ce sera tout simplement MAX() et pour les conditions ce
sera HAVING, qui est en gros le where du group by. Si tu veux avoir des
idées de syntaxe sql, tu fais une requête de regroupement en mode création,
et tu passes en mode sql, tu verras le code qui aura été généré.

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Fred Pasc
Re-Bonjour et Merci pour ta réponse
A+
Fred

"Gafish" a écrit dans le message de news:

Fred Pasc wrote:
Bonjour Gafish,

"Gafish" a écrit:
Fais toi une nouvelle requête, ajoute ta ou tes tables, et ajoute tes
champs, avec tout à gauche l'identifiant d'une borne et ensuite à sa
droite la date. Clique sur le sigma (bouton opération) dans la barre
de menu. Ensuite, pour le champ borne, dans la ligne opération tu
choisis "regroupement" et sur le champ date, tu choisis "maximum".
Tu ajoutes aussi la case "opérationnelle" et pour celle ci tu
choisis "ou" en opération et tu mets 0 en critère.


Juste par curiosité, ça donne quoi comme syntaxe en SQL?
Merci d'avance (si tu as le temps)
A+
Fred



Dès que tu fais des regroupements, cela va utiliser la clause sql GROUP
BY.

Pour le maximum, ce sera tout simplement MAX() et pour les conditions ce
sera HAVING, qui est en gros le where du group by. Si tu veux avoir des
idées de syntaxe sql, tu fais une requête de regroupement en mode
création,

et tu passes en mode sql, tu verras le code qui aura été généré.

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
LouisPat
Merci les gars...

Vous êtes des champions!!

LouisPat
Avatar
LouisPat
Oups...

J'ai été optimiste un peu trop rapidement... En fait ça marche presque...

Avec la requête proposée par Gafish, j'obtiens les bornes qui ont été non
fonctionnelles, avec leur plus récente date de non fonctionalité...

En fait, Access me calcule d'abord les bornes non-fonctionnelles et
m'affiche ensuite les dates les plus récentes de non fonctionalité, mais je
voudrais qu'il me trouve D'ABORD la date de la plus récente intervention, et
qu'il vérifie par la suite si elle est non fonctionnelle

Merci vraiment beaucoup

LouisPat



Merci les gars...

Vous êtes des champions!!

LouisPat


Avatar
Bonjour

"LouisPat"
|
| En fait, Access me calcule d'abord les bornes non-fonctionnelles et
| m'affiche ensuite les dates les plus récentes de non fonctionalité, mais je
| voudrais qu'il me trouve D'ABORD la date de la plus récente intervention, et
| qu'il vérifie par la suite si elle est non fonctionnelle
|


En fait, juste un Max sur la date et aucun critère sur le fonctionnel oui/non
=>
tu obtiendras la date de dernière intervention et l'état dans lequel la borne a été laissée

à+

--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------
Avatar
LouisPat
Encore une fois merci pour toute l'aide que vous me donnez ... Mais ça ne
marche pas encore... ON y est presque...

Si je laisse le champ fonctionnel vide, j'obtiens l'état de mes bornes à
leur dernière intervention (qu'elles soient fonctionnelles ou non), mais pour
les bornes qui ont été non fonctionnelles dans le passé, j'obtiens aussi la
date ou elle était déficiente. Ainsi, pour certaines bornes j'ai 2 dates...

y-a-t-il moyen de créer un petit algorithme avec le langage SQL, pour
obtenir ce que je veux... du genre

-Trouver la date de la dernière intervention sur la dernière borne
-Dans ces bornes trouver celles qui sont non fonctionnelles
-afficher

et non le contraire

Merci
Louis Pat
merci encore


Bonjour

"LouisPat"
|
| En fait, Access me calcule d'abord les bornes non-fonctionnelles et
| m'affiche ensuite les dates les plus récentes de non fonctionalité, mais je
| voudrais qu'il me trouve D'ABORD la date de la plus récente intervention, et
| qu'il vérifie par la suite si elle est non fonctionnelle
|


En fait, juste un Max sur la date et aucun critère sur le fonctionnel oui/non
=>
tu obtiendras la date de dernière intervention et l'état dans lequel la borne a été laissée

à+

--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------





Avatar
Bonjour

Exact : c'est probablement à cause du regroupement sur le champ "état" qui a 2 valeurs donc 2
lignes.
Il faut donc procéder en 2 temps :

1 sous-requête qui affiche unioquement borne (regroupé) + date dernière intervention (max)
la requête qui affiche les champs de ta table et ceux de ta sous-requête avec 2 liens :

table.borne<->sous-requete.borne
table.dateinterverntion <->sous-requete.max(date.intervention)

Sinon, essaye la requete suivante (plus lente mais pas de sous-requête) :

SELECT DISTINCT IDBorne, DateIntervention
FROM LaTable
WHERE LaDate In (SELECT Max(LaDate) FROM LaTable GROUP BY IDBorne;);

et au final, ça donnera une requête unique :

SELECT DISTINCT IDBorne, DateIntervention, BorneFonctionnelle
FROM LaTable
WHERE LaDate In (SELECT Max(LaDate) FROM LaTable GROUP BY IDBorne;) AND
BorneFonctionnelleúlse;

Voilà
A+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------


"LouisPat" a écrit dans le message de news:

| Encore une fois merci pour toute l'aide que vous me donnez ... Mais ça ne
| marche pas encore... ON y est presque...
|
| Si je laisse le champ fonctionnel vide, j'obtiens l'état de mes bornes à
| leur dernière intervention (qu'elles soient fonctionnelles ou non), mais pour
| les bornes qui ont été non fonctionnelles dans le passé, j'obtiens aussi la
| date ou elle était déficiente. Ainsi, pour certaines bornes j'ai 2 dates...
|
| y-a-t-il moyen de créer un petit algorithme avec le langage SQL, pour
| obtenir ce que je veux... du genre
|
| -Trouver la date de la dernière intervention sur la dernière borne
| -Dans ces bornes trouver celles qui sont non fonctionnelles
| -afficher
|
| et non le contraire
|
| Merci
| Louis Pat
| merci encore
|