Нужна только одна строка, возвращаемая из INNER JOIN

Я хотел бы вернуть первую строку только из внутреннего соединения. У меня есть две таблицы:

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

Строки в ТАБЛИЦЕ Y могут иметь идентичные даты создания, поэтому я сначала получаю MAX (дату создания), а затем MAX (id) из этого набора, например:

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
         )
      )
   )
)

Это работает, когда я вызываю его сам по себе, но когда я добавляю его во ВНУТРЕННЕЕ СОЕДИНЕНИЕ, я получаю по строке для каждой совпадающей строки в таблице Y.

Мне нужна последняя запись по дате создания и идентификатору, где xid = id из TABLE_X.

7
задан KyleMit 29 October 2014 в 14:15
поделиться