Tôi muốn trả lại hàng đầu tiên chỉ từ một kết nối bên trong. Tôi có hai bảng:Chỉ cần một hàng được trả về từ 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
hàng trong bảng Y có thể có tạo giống hệt ngày vì vậy tôi đầu tiên nhận được MAX (creationdate) và sau đó thì MAX (id) từ bộ này, ví dụ:
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
)
)
)
)
Điều này hoạt động khi tôi gọi nó là của riêng nó nhưng khi tôi thêm nó vào INNER JOIN Tôi đang nhận được một hàng cho mỗi hàng phù hợp trong bảng Y.
Điều tôi muốn là kỷ lục mới nhất của creationdate và id trong đó xid = id từ TABLE_X.
Bạn có thể cho chúng tôi thấy nỗ lực của bạn ở bên trong không? –
Những gì Marcelo nói. Vấn đề có thể nằm trong JOIN, chính nó. Bạn đang tham gia vào id hoặc MAX (id), ví dụ? –
MAX (id) - là cột id từ X hoặc Y? –