PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → [WD8] PB METHODE REQUETE SQL
[WD8] PB METHODE REQUETE SQL
Débuté par Medor, 12 jan. 2005 17:57 - 4 réponses
Posté le 12 janvier 2005 - 17:57
Bonjour

Soit une base avec les fichiers F_CLIENT et F_FACTURE

F_CLIENT est composé des rubriques CL_IDCLEUNIK et CL_RAISONSOC
F_FACTURE est compsé des rubriques FA_IDCLEUNIK, FA_DATE et FA_CL_CLEUNIK

Comment faire la requete qui me donne pour chaque CLIENT la FACTURE la plus
récente ?

Merci pour vos lumieres.

Stéphane
Posté le 12 janvier 2005 - 19:02
Bonjour,

essaye :

Select F_FACTURE.FA_DATE,F_FACTURE.FA_IDCLEUNIK, F_CLIENT.CL_IDCLEUNIK, F_CLIENT.CL_RAISONSOC From F_FACTURE, F_CLIENT
where F_CLIENT.CL_IDCLEUNIK = F_FACTURE.FA_CL_CLEUNIK
order by desc F_FACTURE.FA_DATE,F_FACTURE.FA_IDCLEUNIK, F_CLIENT.CL_IDCLEUNIK, F_CLIENT.CL_RAISONSOC

Ensuite il te reste à lire le premier enregistrement et tu auras la dernière facture de ton client, c'est à dire la plus récente.

En espérant t'avoir aidé.

Nico.
Posté le 12 janvier 2005 - 19:04
De loin dans le brouillard, je dirais ceci:
select * from f_client,f_facture where fa_date = max(select f2.fa_date from fa_facture as f2 where f2.fa_idcleunik = facture.fa_idcleunik) and facture.fa_cl_cleunik ) f_client.cl_idcleunik

En gros, je sélectionne la facture dont la date est la plus grande pour le client donné.
Il faut bien sûr remplacer * par la liste des champs à récupérer.

Frédéric.
Posté le 13 janvier 2005 - 11:22
Merci pour vos réponses, mais le probleme n'est pas d'obtenir la derniere
facture d'un client donné (je sais le faire). Ce que je souhaite c'est une
requete qui me permette d'obtenir la liste de tous les clients avec leur
derniere facture.

Merci de m'indiquer si cette requete est realisable.

@+

Stephane
Posté le 13 janvier 2005 - 11:43
Ma requête renvoie tout les clients avec leur dernière facture, à l'exception des clients qui n'ont pas de facture.
Si tu veux tout les clients, même ceux qui n'ont pas de facture, ainsi que la dernière facture pour ceuw qui en ont une, il faut faire un left outer join entre le client et la facture:
select * from f_client left outer join f_facture on facture.fa_cl_cleunik = f_client.cl_idcleunik where fa_date = max(select f2.fa_date from fa_facture as f2 where f2.fa_idcleunik = facture.fa_idcleunik)
A vérifier, j'ai toujours un peu de mal avec les jointure externes ;)

Frédéric.