Внутреннее объединение 3 полей из 1-й таблицы с тем же полем во 2-й таблице - PullRequest
0 голосов
/ 09 июня 2019

У меня есть table1 (mtrlines), где 3 разных столбца, содержащие идентификатор из таблицы1 (prsn). Мне нужно выбрать имя2 из таблицы2 вместо ID

Запустив запрос только для 1 столбца, он работает и возвращает правильную информацию: т.е.

SELECT ['Ins.'].NAME2 AS ['Ins.']
FROM MTRLINES
INNER JOIN PRSN AS ['Ins.'] ON MTRLINES.CCCTABLE01 = ['Ins.'].PRSN
WHERE MTRLINES.FINDOC = 22648

Я получаю правильный результат:
Линия 1: FL
Линия 2: FL
Линия 3: GP

но при попытке объединить больше столбцов он возвращает пустые значения т.е.

SELECT ['Ins.'].NAME2 AS ['Ins.'], ['Ins.1'].NAME2 AS ['Ins.1']
FROM MTRLINES
INNER JOIN PRSN AS ['Ins.'] ON MTRLINES.CCCTABLE01 = ['Ins.'].PRSN
INNER JOIN PRSN AS ['Ins.1'] ON MTRLINES.CCCTABLE02 = ['Ins.1'].PRSN
WHERE MTRLINES.FINDOC = 22648

Возвращает нулевые значения.

Как я могу получить информацию ниже?

Руководитель: Ins. | Ins.1
Линия 1: FL | EA
Line2: FL | RT
Line3: GP | EA

Где FL, EA и т. Д. - это значения из столбцов name2 таблицы prsn.

1 Ответ

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

Вы не много говорите о своей базе данных и требованиях.Но, учитывая запрос и результат, похоже, что у вас нет никаких комбинаций MTRLINES.FINDOC = 22648 и двух совпадающих строк в таблице PRSN.

Если вы измените свои объединения на соединения LEFT OUTER, вместо этого выПосмотрю, есть ли у вас какие-либо совпадения.Итак, что-то вроде этого:

SELECT ['Ins.'].NAME2 AS ['Ins.'], ['Ins.1'].NAME2 AS ['Ins.1']
FROM MTRLINES
LEFT OUTER JOIN PRSN AS ['Ins.'] ON MTRLINES.CCCTABLE01 = ['Ins.'].PRSN
LEFT OUTER JOIN PRSN AS ['Ins.1'] ON MTRLINES.CCCTABLE02 = ['Ins.1'].PRSN
WHERE MTRLINES.FINDOC = 22648

И чтобы сделать результат немного более читабельным, по крайней мере, во время разработки, добавьте столбец из таблицы MTRLINES в список SELECT.Если вам нужны только строки, в которых как минимум одна соответствующая строка в таблице PRSN, вы можете добавить предикат к предложению WHERE:

AND EXISTS(SELECT ['INS.'].Name2, ['INS.1'].Name2 EXCEPT SELECT NULL,NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...