2 votes

Trouver la date la plus récente, Firebird dBase

J'ai deux tables contenant des données, et alors que j'ai vu de nombreux exemples sur la façon de faire ce que je veux avec une seule table (même ici sur SO), je n'arrive pas à comprendre comment le faire avec plus d'une table en utilisant Firebird (qui n'est probablement pas beaucoup plus différent de ce que la plupart des gens considéreraient comme du simple SQL), mais, je n'en sais pas assez pour en faire un cas.

Quoi qu'il en soit -

J'ai le code suivant :

select cqd.customer_price, cqd.entry_date, pnm.pn
  from cq_detail cqd, parts_master pnm
 where cqd.pnm_auto_key = pnm.pnm_auto_key
 order by cqd.entry_date desc

Il renvoie les bonnes données, comme le montre l'exemple ci-dessous :

CUSTOMER_PRICE, ENTRY_DATE, PN
------------------------------
1,052.00        08.01.2012, 1938-12
1,054.00        08.02.2012, 1938-12
1,050.00        08.08.2012, 1938-12
1,051.00        08.04.2012, 1938-12
5,052.00        08.20.2012, 9999-19
7,054.00        08.07.2012, 9999-19
3,030.00        08.12.2012, 9999-19
6,021.00        08.04.2012, 9999-19

Ce qui me convient parfaitement. Malheureusement, les pouvoirs en place voudraient que l'ensemble des résultats soit juste :

CUSTOMER_PRICE, ENTRY_DATE, PN
------------------------------
1,050.00        08.08.2012, 1938-12
5,052.00        08.20.2012, 9999-19

SQL n'est pas mon travail habituel, notre spécialiste SQL habituel est absent et j'essaie de m'occuper des tâches les plus simples pendant son absence.

En résumé, j'ai besoin de renvoyer la date la plus récente pour chaque PN. Je soupçonne que j'aurai besoin d'une sélection imbriquée ou d'une forme de JOIN, et ces méthodes me dépassent un peu ces derniers temps.

Merci d'avance.

JB

3voto

Anuj Points 46
select a.pn,b.entry_date,c.pn from
(select  pnm.pn as pn,max(cqd.entry_date) as max_entry_date
  from cq_detail as cqd, parts_master pnm
 where cqd.pnm_auto_key = pnm.pnm_auto_key
group by pnm.pn) a

inner join 

(select cqd.customer_price as customer_price, cqd.entry_date as entry_date, pnm.pn as pn
  from cq_detail cqd, parts_master pnm
 where cqd.pnm_auto_key = pnm.pnm_auto_key) as b 
on a.pn=b.pn and a.max_entry_date=b.entry_date
order by b.entry_date

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X