Pb pour rentrer un critère sous access

Fermé
sagittarius9 Messages postés 5 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009 - 23 févr. 2009 à 08:19
sagittarius9 Messages postés 5 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009 - 24 févr. 2009 à 12:32
Bonjour,

J'ai un pb pour rentrer un critère dans une de mes requêtes ACCESS.
Voici ma situation, j'ai une table principale "Equipements". Chaque ligne est un équipement.
J'ai une autre table "Modèles". Chaque ligne est un modèle qui représente un équipement de la table "Equipements". Il est possible d'avoir plusieurs modèles par équipement. Il y a donc une relation de jointure type 1 entre les deux tables.

Ex:

Table Equipements:
Eq1
Eq2
Eq3

Table Modèles (une colonne pour chaque info)
Mod1 = version 1 de Eq2 Statut ROUGE
Mod2 = version 1 de Eq3 Statut VERT
Mod3 = version 2 de Eq3 Statut ROUGE
Mod4 = version 3 de Eq3 Statut ROUGE
Mod5 = version 2 de Eq2 Statut VERT


Je tente maintenant d'extraire une requête qui me permettrait de donner le statut du dernier modèle (dernière version donc dernière rentrée dans la table Modèles).
En gros avec l'exemple au dessus je cherche à produire une requête qui me sort:

Eq1 Pas de modèle disponible
Eq2 Statut VERT
Eq3 Statut ROUGE

Donc j'ai essayé pas mal de choses sans arriver à faire ce que je veux.
Dans mes requêtes je demande de me sortir grâce à la fonction "Dernier" le dernier N° (clé primaire de la table Modèles) pour chaque entrée dans la table Modèles, mais ensuite impossible de retrouver le statut associé.

D'où ma question, pouvez vous m'aider ? Que dois je rentrer dans les cases critères (ou en SQL) pour faire ce que j'ai besoin ?

Merci pour votre aide, si vous avez besoin d'autres infos dites moi !!

A+
Sagittarius9

6 réponses

blux Messages postés 26680 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 février 2025 3 327
23 févr. 2009 à 10:52
Salut,

si tu peux avoir plusieurs modèles par équipement, alors ta relation doit être 1-n.

Ensuite, pour avoir le 'dernier enregistrement inséré', il n'existe pas de fonction, car un SGBD ne stocke pas les données de manière linéaire, donc il est impossible de savoir à quel endroit dans le table se trouve un enregistrement.

Par contre, tu peux avoir une clé primaire de type numéroauto, qui s'incrémente à chaque ajout de ligne. Il devrait être facile de trouver la plus grande avec la fonction max.
0
sagittarius9 Messages postés 5 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009
23 févr. 2009 à 11:37
Ma clé primaire est auto en effet pour les deux tables.
J'ai tenté la fonction Dernier, ça ne marche pas c'est vrai !

Quand j'utilise le critère Max pour le numéro, il me sort quand même toutes les lignes modèles pour chaque équipement, alors que j'écris Opération = Max dans la case critère !

Ce que j'ai besoin c'est détecté la ligne modèle qui a la plus grande clé primaire par équipement, et ainsi coller d'autres champs de cette ligne.

Merci pour ta réponse en tout cas !!

A+
0
blux Messages postés 26680 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 février 2025 3 327
23 févr. 2009 à 14:52
Le problème, c'est que les fonctions last ou max sont des fonctions d'agrégat. Il sera donc impossible de récupérer une valeur autre que celle mise dans la fonction.
0
sagittarius9 Messages postés 5 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009
23 févr. 2009 à 16:04
Si je mets Max comme critère pour le champ N° de la table Modèles,
il me sort comme résultats tous les Modèles de l'équipement. Je ne comprends pas pourquoi, il devrait me sortir qu'une seule ligne correspondant au numéro Max du champ N° ?

Pourquoi fonctionne-t-il ainsi ?
0
blux Messages postés 26680 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 février 2025 3 327
23 févr. 2009 à 16:22
Ca dépend de ta requête et des relations entre les tables.

Mais sache qu'un simple 'select max(numéro) from modeles' ne sortira qu'une seule ligne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sagittarius9 Messages postés 5 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009
24 févr. 2009 à 12:07
OK merci c'est résolu
0
blux Messages postés 26680 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 février 2025 3 327
24 févr. 2009 à 12:28
on peut savoir comment ? :-)
0
sagittarius9 Messages postés 5 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009
24 févr. 2009 à 12:32
En combinant la fonction "Dernier" et "Non vide", j'ai la liste qu'il me fallait.

Si je considère que toutes les rentrées de Modèles se font chronologiquement, ce qui est le cas, alors cette combinaison marche nickel !!

Merci encore pour tes remarques
0