У меня есть две таблицы:
T_STOCK
: первичный ключ - id
, seller
, а в некоторых других полях можно указать a
и b
.
T_FLOW
: первичным ключом является (id
+ startdate
) и некоторые другие поля, например c
и d
.
Я хочу запрос, который возвращает все столбцы для каждой записи из T_STOCK
относительно определенного seller
, но завершается столбцами (startDate
, c
и d
) из таблицы T_FLOW
.
Отношение между T_STOCK
и T_FLOW
основано на атрибуте id
.
Каждый раз, когда в T_STOCK
существует запись с определенным идентификатором, для этого идентификатора существует как минимум одна запись в T_FLOW
.
Однако может случиться так, что в T_FLOW
существует более одной записи. В этом случае я должен рассмотреть только самый последний (то есть тот, у которого max(startDate)
).
Другими словами, если у нас есть содержимое следующих таблиц:
+---------------------+
| T_STOCK |
+----+--------+---+---+
| ID | SELLER | a | b |
+----+--------+---+---+
| 01 | foobar | 1 | 2 |
+----+--------+---+---+
| 02 | foobar | 3 | 4 |
+----+--------+---+---+
| 03 | foobar | 5 | 6 |
+----+--------+---+---+
+---------------------------+
| T_FLOW |
+----+------------+----+----+
| ID | StartDate | c | d |
+----+------------+----+----+
| 01 | 01/01/2010 | 7 | 8 |
+----+------------+----+----+
| 02 | 01/01/2010 | 9 | 10 |
+----+------------+----+----+
| 02 | 07/01/2010 | 11 | 12 |
+----+------------+----+----+
| 03 | 03/01/2010 | 13 | 14 |
+----+------------+----+----+
| 03 | 05/01/2010 | 15 | 16 |
+----+------------+----+----+
Результат запроса должен быть:
+----+--------+---+---+------------+----+----+
| ID | SELLER | a | b | startDate | c | d |
+----+--------+---+---+------------+----+----+
| 01 | foobar | 1 | 2 | 01/01/2010 | 7 | 8 |
+----+--------+---+---+------------+----+----+
| 02 | foobar | 3 | 4 | 03/01/2010 | 11 | 12 |
+----+--------+---+---+------------+----+----+
| 03 | foobar | 5 | 6 | 01/01/2010 | 15 | 16 |
+----+--------+---+---+------------+----+----+
Как мне тогда написать свой запрос?