Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2926 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pb de requete sous ACCESS (utilisation de max)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb de requete sous ACCESS (utilisation de max)

n°409355
Trancy
Posté le 27-05-2003 à 15:39:22  profilanswer
 

Kikoo all :)
Dans ma table facturation il y a :
N°reglement , N°facture , datePaiement les autres on s'en fou ^^
N° reglement est clef primaire
Sachant que il y a possibilite d'avoir une facture qui posede plusieurs datePaiement; J'aimerais obtenir le N°reglement qui correspond a la derniere datePaiement c a d au max de DatePaiement.
J'arrive a obtenir le N°Facture pour la datePaiement max mais pas le N°reglement, qd j'essai il me liste la meme facture plusieurs fois ex :
12             40000       12/04/2003
15             40000       10/03/2003
et moi je veux que la 1ere ligne
Merci pour votre aide
a+

mood
Publicité
Posté le 27-05-2003 à 15:39:22  profilanswer
 

n°409455
gabouel
Posté le 27-05-2003 à 15:58:37  profilanswer
 

Si tes numéros de facture sont uniques, moi je verrais bien un truc dans le genre :
 
SELECT
[N°reglement],[N°Facture],[datePaiement]
FROM
Facturation,
  (SELECT
   [N°Facture],Max([datePaiement]) AS Max
   GROUP BY [N°Facture]) B
WHERE
[N°Facture]=B.Max;

n°409517
Trancy
Posté le 27-05-2003 à 16:11:19  profilanswer
 

Justement dans la table il y a plusieurs lignes contenant le meme N° de facture :'(
et en + il aime pas le select dans la clausse from  :cry:  
Qqun a une autre iD plz ?

n°409784
MagicBuzz
Posté le 27-05-2003 à 22:01:06  profilanswer
 

Bon, j'ai fait ta requête, mais t'as plus qu'à la comprendre pour l'adapter à ton problème, parceque j'ai préféré reprendre une table dans une de mes base ayant une architecture similaire plutôt que de me faire chier à refaire une table ;)
 
Ma table s'appelle "VOTE".
Les utilisateurs peuvent voter pour une oeuvre.
La requête retourne pour chaque oeuvre (entité), quel utilisateur a voté en dernier, et à quelle date.
 
J'utilise un "distinct" car ayant d'autres champs dans ma table cela me retourne des doublons. Tu n'en auras certainement pas besoin.
 

Code :
  1. select distinct v1.entite_id, v1.u_login, v1.crea_date
  2. from vote v1
  3. where v1.crea_date = (select max(v2.crea_date) from vote v2 where v2.entite_id = v1.entite_id)
  4. order by v1.entite_id

n°409787
MagicBuzz
Posté le 27-05-2003 à 22:02:57  profilanswer
 

Trancy a écrit :

Justement dans la table il y a plusieurs lignes contenant le meme N° de facture :'(
et en + il aime pas le select dans la clausse from  :cry:  
Qqun a une autre iD plz ?


La requête de gabouel fonctionne aussi, mais Access ne supporte pas les sous-requêtes de ce genre aussi simplement : il faut créer une autre requête, et s'en servir comme d'une vue.

n°410587
Trancy
Posté le 28-05-2003 à 16:10:04  profilanswer
 

MERCI BEAUCOUP ca marche :bounce:
maintenant j'ai un autre ptit pb c que pour une facture desfois il y a 2 fois la meme dateDePaiement donc ca me retourne 2 ligne (et c normal) car il c pas quel ligne est la bonne (moi je sais c celle ou le MontantPaiement est le + grand)
J'ai fait une requete qui marche avec le montantPaiement mais J'allucine comme c LONGGGGGGG :'(
fo dire que c une sous requete d'une sous requete ... bon je la ballance si y a qqun qui pourrais la simplifier pour qu'elle soit + rapide ce serrais cool ;)
 
SELECT v1.NoFactureClient, v1.NoReglement, v1.DateDePaiement, v1.MontantReglement
FROM Table_ReglementFacture AS v1
WHERE (((v1.DateDePaiement)=(select max( v2.DateDePaiement) FROM Table_ReglementFacture AS v2 where  v2.NoFactureClient = v1.NoFactureClient AND v1.MontantReglement = (select max(v3.MontantReglement) FROM Table_ReglementFacture AS v3 WHERE v1.NoFactureClient = v3.NoFactureClient AND v1.DateDePaiement=v3.DateDePaiement )  )))
ORDER BY v1.NoFactureClient;
 
MERCI de votre aide, merci MagicBuzz

n°410797
MagicBuzz
Posté le 28-05-2003 à 21:40:38  profilanswer
 

Sans tester ni rien, je suis tenté de dire que cette requête marche :
 

SELECT v1.NoFactureClient, v1.NoReglement, v1.DateDePaiement, max(v1.MontantReglement)  
FROM Table_ReglementFacture AS v1  
WHERE v1.DateDePaiement=(select max(v2.DateDePaiement) FROM Table_ReglementFacture AS v2 where  v2.NoFactureClient = v1.NoFactureClient)
GROUP BY v1.NoFactureClient, v1.NoReglement, v1.DateDePaiement
ORDER BY v1.NoFactureClient;


 
Après, je sais pas si ça va être rapide (à priori, il ne devrait pas y avoir de problème)


Message édité par MagicBuzz le 28-05-2003 à 21:40:58

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pb de requete sous ACCESS (utilisation de max)

 

Sujets relatifs
Utilisation du CPU par une applicationutilisation des objets (classes etc...)
Comment savoir si une requête à bien fonctionnée avec un Resultsetprobleme requete et formulaire access...
[Delphi] plugin et utilisation dynamique de dllrequete mysql + quote
[sql] requete que j'arrive pas a ecrire[Débutant] utilisation de PHP
[VBA] envoi de paramètres associé à une requête SQL 
Plus de sujets relatifs à : Pb de requete sous ACCESS (utilisation de max)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR