SQL-连接3个表并根据id选择最新记录的条目

SQL-连接3个表并根据id选择最新记录的条目,sql,oracle,join,max,Sql,Oracle,Join,Max,我有一个相当复杂的谜语要解。到目前为止,我还不确定 我有3个表,我需要加入以获得结果 最重要的是我需要最高的h\u idperp\u idh_id是日志历史记录中的uniqe条目。我需要给定点的最新一个(p\u id->num) 除此之外,我还需要ext和name 历史记录在Oracle中,您可以使用保留: +----------------+---------+--------+ | h_id | p_id | str_id | +----------------+-

我有一个相当复杂的谜语要解。到目前为止,我还不确定

我有3个表,我需要加入以获得结果

最重要的是我需要最高的
h\u id
per
p\u id
h_id
是日志历史记录中的uniqe条目。我需要给定点的最新一个(
p\u id
->
num

除此之外,我还需要
ext
name


历史记录在Oracle中,您可以使用
保留

+----------------+---------+--------+ | h_id | p_id | str_id | +----------------+---------+--------+ | 1 | 1 | 11 | | 2 | 5 | 15 | | 3 | 5 | 23 | | 4 | 1 | 62 | +----------------+---------+--------+
SELECT p.num, 
       MAX(h.h_id) as maxm,
       MAX(s.name) KEEP (DENSE_RANK FIRST ORDER BY h.h_id DESC) as name,
       MAX(s.ext) KEEP (DENSE_RANK FIRST ORDER BY h.h_id DESC) as ext
FROM history h INNER JOIN
     street s
     ON s.str_id = h._str_id INNER JOIN
     point p
     ON p.p_id = h.p_id
GROUP BY p.num;
keep
语法允许您对聚合执行“first()”和“last()”

+----------------+---------+-------------+ | str_id | ext | name | +----------------+---------+-------------+ | 15 | | Mein st. 33 | - bad name | 11 | | eck st. 42 | - bad name | 62 | abc | Main st. 33 | | 23 | efg | Back st. 42 | +----------------+---------+-------------+ +----------------+---------+-------------+-----+ | num | ext | name |h_id | +----------------+---------+-------------+-----+ | 3453 | efg | Back st. 42 | 3 | | 4564 | abc | Main st. 33 | 4 | +----------------+---------+-------------+-----+
SELECT num, max(name), max(ext), MAX(h_id) maxm FROM history
INNER JOIN street on street.str_id = history._str_id
INNER JOIN point on point.p_id = history.p_id
GROUP BY point.num
SELECT p.num, 
       MAX(h.h_id) as maxm,
       MAX(s.name) KEEP (DENSE_RANK FIRST ORDER BY h.h_id DESC) as name,
       MAX(s.ext) KEEP (DENSE_RANK FIRST ORDER BY h.h_id DESC) as ext
FROM history h INNER JOIN
     street s
     ON s.str_id = h._str_id INNER JOIN
     point p
     ON p.p_id = h.p_id
GROUP BY p.num;