0
Я работаю над внутренним запросом соединения sql, который должен возвращать MAX-элементы из других таблиц. Таблицы B, C, D, E могут быть пустыми. В этом случае нуль также следует печатать на выходе.Oracle Inner присоединяется к нескольким таблицам, возвращающим нулевые значения
Это то, что я пробовал.
SELECT A.INDEX, A.CODE, MAX(B.DAY), MAX(C.TIMESTAMP), MAX(D.TIMESTAMP)
FROM A
INNER JOIN B
INNER JOIN C
INNER JOIN D
INNER JOIN E
ON A.INDEX = B.INDEX
ON A.INDEX = C.INDEX
ON A.INDEX = D.INDEX
ON A.INDEX = E.INDEX AND E.FUNCTION = 0;
определение Таблицы:
A
-------
INDEX NOT NULL NUMBER(10)
CODE NOT NULL VARCHAR2(16)
B
--------
INDEX NUMBER(10)
DAY NUMBER(10)
C
---------
INDEX NUMBER(10)
TIMESTAMP TIMESTAMP(6)
D
---------
INDEX NUMBER(10)
TIMESTAMP TIMESTAMP(6)
E
----------
INDEX NUMBER(10)
FUNCTION NUMBER(5)
Спасибо, это сработало. Я ищу только соответствующие элементы из таблицы E. Мне все равно, B, C, D. Если записи присутствуют в B, C, D MAX() записи должны быть возвращены в противном случае null. Я изменил запрос, как показано ниже. Он тоже работал. ВЫБОР A.INDEX, A.CODE, MAX (B.DAY), MAX (C.TIMESTAMP), MAX (D.TIMESTAMP) ИЗ LEFT JOIN B ON A.INDEX = B.INDEX LEFT JOIN C ON A.INDEX = C.INDEX LEFT JOIN D ON A.INDEX = D.INDEX INNER JOIN E ON A.INDEX = E.INDEX AND E.FUNCTION = 0; – user1