Besoin d'une ligne seulement renvoyé de INNER JOIN

Je voudrais revenir sur la première ligne seulement à partir d'une jointure interne. J'ai deux tables:

TABLE_X |  TABLE_Y
id      |  id   creationdate  xid 
1       |  1    01/01/2011    1
2       |  2    01/01/2011    1
3       |  3    31/12/2010    2
4       |  4    28/12/2010    3

Lignes dans la TABLE Y sont identiques, les dates de création et je suis donc d'abord obtenir le MAX(creationdate) et puis alors MAX(id) à partir de cet ensemble, par exemple:

SELECT  a.id,
        c.id,
        d.id,
        e.id,
        d.CREATIONDATE,
        a.REFNUMBER,
        a.DATECREATED,
        a.DESCRIPTION,
        e.CATEGORYCODE,
        e.OUTSTANDINGAM_MONAMT,
        e.PREVPAIDAMOUN_MONAMT,
        e.TOTALINCURRED_MONAMT,
        e.LOSSFROMDATE,
FROM 
TABLE_A a
INNER JOIN TABLE_B b ON (b.id = a.id)
INNER JOIN TABLE_C c ON (c.id = b.id)
INNER JOIN TABLE_D d ON
(
   c.i =
   (
      select
      d.id
      FROM TABLE_D
      WHERE TABLE_D.id = c.id
      AND TABLE_D.id =
      (
         select
         max(id)
         from TABLE_D t1
         where c_id = c.id
         and CREATIONDATE =
         (
            select
            max(CREATIONDATE)
            from TABLE_D t2
            where t2.c_id = t1.c_id
         )
      )
   ) 
)

INNER JOIN TABLE_E e ON
(
   d.i =
   (
      select
      e.d_id
      from TABLE_E
      where d_id = d.id
      AND id =
      (
         select
         max(id)
         from e t1
         where e.d_id = d.id
         and CREATIONDATE =
         (
            select
            max(CREATIONDATE)
            from TABLE_E t2
            where t2.d_id = t1.d_id
         )
      )
   )
)

Cela fonctionne lorsque je l'appelle sur son propre, mais quand je l'ajoute à une JOINTURE INTERNE, je suis une ligne pour chaque ligne correspondante dans la table Y.

Ce que je veux, c'est le dernier enregistrement par creationdate et id où xid = id de TABLE_X.

Pouvez-vous nous montrer votre tentative à la jointure interne?
Ce que Marcelo a dit. Le problème réside probablement dans le REJOINDRE, lui-même. Êtes-vous rejoindre sur l'id ou MAX(id), par exemple?
Le MAX(id) - est l'id de la colonne de X ou Y?
N'a pas de sens: vous voulez que le max id valeur... en fonction du max date par l'id d'installation. Le max id n'est pas pertinent.
Je pense que vous avez besoin de clarifier votre SQL en utilisant clairement nommées par l'alias de table.

OriginalL'auteur adamdunne | 2011-01-17