ПРИСОЕДИНЯЙТЕСЬ к двум таблицам с последним вводом внешнего ключа - PullRequest
0 голосов
/ 05 июня 2019
  • У меня есть таблица устройств (A) и другая таблица (B) с деталями устройства.
  • В таблице B есть несколько записей для каждого идентификатора устройства из таблицы A.
  • Мне нужно выбрать все устройства из таблицы A вместе с последней записью из таблицы B.

Таблица A:

+----+--------+---------+
| id1| name   | Details |
+----+--------+---------+
| 1  | name1  | text1   |
| 2  | name2  | text2   |
| 3  | name3  | text3   |
| 4  | name4  | text4   |
+----+--------+---------+

Таблица B:

+----+-------------+---------+
| id2|  device_id  | battery |
+----+-------------+---------+
| 1  | 1           | 20%     |
| 2  | 1           | 40%     |
| 3  | 1           | 30%     |
| 4  | 2           | 15%     |
| 5  | 2           | 75%     |
| 6  | 3           | 90%     |
+----+-------------+---------+

Ожидаемый результат:

+----+-------------+---------+
| id1|  device_id  | battery |
+----+-------------+---------+
| 1  | 1           | 30%     |
| 2  | 2           | 75%     |
| 3  | 3           | 90%     |
| 4  | NULL        | NULL    |
+----+-------------+---------+

1 Ответ

0 голосов
/ 05 июня 2019

Я получил свой ответ!

SELECT a.*, b1.*
FROM table_A a
LEFT JOIN table_B b1 ON (a.id = b1.device_id)
LEFT JOIN table_B b2 ON (a.id = b2.device_id AND 
    (b1.date < b2.date OR b1.date = b2.date AND b1.id < b2.id))
WHERE b2.id IS NULL
ORDER BY a.id
...