Я получил довольно сложную загадку, чтобы решить. Пока я не разблокирован.
Я получил 3 таблицы, к которым мне нужно присоединиться, чтобы получить результат.
Самое главное, что мне нужно самое большое h_id
за p_id
. h_id
- уникальная запись в истории журнала. И мне нужен самый новый для данной точки (p_id
-> num
).
Помимо этого мне также нужны ext
и name
.
история
+----------------+---------+--------+
| h_id | p_id | str_id |
+----------------+---------+--------+
| 1 | 1 | 11 |
| 2 | 5 | 15 |
| 3 | 5 | 23 |
| 4 | 1 | 62 |
+----------------+---------+--------+
точка
+----------------+---------+
| p_id | num |
+----------------+---------+
| 1 | 4564 |
| 5 | 3453 |
+----------------+---------+
улица
+----------------+---------+-------------+
| 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 |
+----------------+---------+-------------+-----+
Я использую Oracle SQL. Попытка с использованием запроса ниже, но результат не соответствует действительности.
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