Pb de requete sous ACCESS (utilisation de max) - SQL/NoSQL - Programmation
Marsh Posté le 27-05-2003 à 15:58:37
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;
Marsh Posté le 27-05-2003 à 16:11:19
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
Qqun a une autre iD plz ?
Marsh Posté le 27-05-2003 à 22:01:06
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 :
|
Marsh Posté le 27-05-2003 à 22:02:57
Trancy a écrit : Justement dans la table il y a plusieurs lignes contenant le meme N° de facture |
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.
Marsh Posté le 28-05-2003 à 16:10:04
MERCI BEAUCOUP ca marche
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
Marsh Posté le 28-05-2003 à 21:40:38
Sans tester ni rien, je suis tenté de dire que cette requête marche :
SELECT v1.NoFactureClient, v1.NoReglement, v1.DateDePaiement, max(v1.MontantReglement) |
Après, je sais pas si ça va être rapide (à priori, il ne devrait pas y avoir de problème)
Marsh Posté le 27-05-2003 à 15:39:22
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+