Я хочу объединить несколько таблиц:
table1:
A B_key B_version C D
123 abc 1 ccc 11
123 abc 2 ddd 11
456 dfg 1 rrr 22
789 vvv 1 55
table2:
A E F
123 s 5
456 r
111 t 2
table3:
B_key B_version G
abc 1 aa
abc 1 bb
abc 2 aa
abc 2 cc
dfg 1 aa
, чтобы результат выглядел так:
A B_key B_version C D E F G
123 abc 1 ccc 11 s 5 aa
123 abc 1 ccc 11 s 5 bb
123 abc 2 ddd 11 s 5 aa
123 abc 2 ddd 11 s 5 cc
456 dfg 1 rrr 22 r aa
789 vvv 1 55
Версия может go до 8.
ЕСЛИ у меня нет A, B_key или B_version - строка бесполезна. В противном случае мне нужно сохранить всю имеющуюся у меня информацию.
На самом деле у меня гораздо больше столбцов.
Я пробовал:
SELECT table1.A, table 1.B_key, table 1.B_version, table 1.C, table 1.D,
table2.E, table2.F,
table3.G
FROM table1
LEFT JOIN table2
ON table1.A = table2.A
LEFT JOIN table3
ON table1.B_key = table3.B_key AND
table1.B_version = table3.B_version
и то же самое с ПОЛНОЕ СОЕДИНЕНИЕ.
В итоге получается то же самое: для каждого B_key сохраняется только самый высокий B_version, а остальные исчезают.
Как мне избежать потери информации?