SQL DB2 - проблема с объединением строк из 2 таблиц в один вывод - PullRequest
1 голос
/ 14 июля 2020

У меня проблемы с объединением строк из 2 таблиц, и я не могу понять, как заставить UNION работать. У меня есть 2 таблицы базы данных:

  • TFBCR
  • TFBCAI

Таблица TFBCR содержит эти столбцы:

  • FBC_REQ_REF_NBR (первичный key)
  • CLT_ID_A
  • FBC_STATUS_CD

TFBCAI не содержит ни одной, 1 или нескольких строк в зависимости от того, является ли указанный выше FBC_STATUS_CD чем угодно, кроме «00». Он имеет:

  • FBC_REQ_REF_NBR (внешний первичный ключ)
  • CLT_ID_B
  • БАЛАНС

Я пытаюсь показать все строки из обоих таблицы, даже если FBC_STATUS_CD равно «00» или что-то еще.

Сейчас выводятся только строки, для которых STATUS_CODE не равен 00, из-за того, как я связываю две таблицы. Как я могу получить что-то вроде этого:

FBC_REQ_REF_NBR     CLT_ID_A      FBC_STATUS_CD  CLT_ID_B    BALANCE
1                   JOHN          00             --------    --------
2                   ADAM          11             ADAM_1      25.00
2                   ADAM          11             ADAM_2      10.00
2                   ADAM          12             ADAM_3      50.00
3                   SAM           00             -------     --------
4                   DAVE          13             DAVE_1      65.50
4                   DAVE          12             DAVE_2      55.00

Это мой SQL:

SELECT
  A.FBC_REQ_REF_NBR,
  A.CLT_ID_A,
  A.FBC_STATUS_CD,
  B.CLT_ID_B,
  B.BALANCE
FROM TFBCR A,
     TFBCAI B
WHERE A.FBC_REQ_REF_NBR = B.FBC_REQ_REF_NBR
ORDER BY A.FBC_REQ_REF_NBR
WITH UR;

Мне нужны отдельные строки из TFBCR, которые имеют код состояния 00 И все строки от TFBCAI (если они есть). Я предполагаю, что это сделано с помощью какого-то подзапроса, но я не могу этого понять.

Спасибо !!

1 Ответ

1 голос
/ 14 июля 2020

Вам нужен LEFT JOIN от TFBCR до TFBCAI:

SELECT
  A.FBC_REQ_REF_NBR,
  A.CLT_ID_A,
  A.FBC_STATUS_CD,
  B.CLT_ID_B,
  B.BALANCE
FROM TFBCR A LEFT JOIN TFBCAI B
ON A.FBC_REQ_REF_NBR = B.FBC_REQ_REF_NBR
...