Я хочу внутренне объединить три таблицы с условием.
Одно условие - DAT.STATE_ID IN ('7', '8', '9').
Количество равно 116 с запросом ниже.
select count(*) from "B_TRACE"."P_TC_DATA" DAT WHERE DAT."STATE_ID" IN ('7','8','9');
Однако число увеличивается до 146. В результате объединения трех таблиц с запросом ниже.
Число счетчиков должно быть меньше 116. Кажется, это неправильно.
Что не так с внутренним запросом объединения?
SELECT DAT.*, SUBID.*, TR.*
FROM "B_TRACE"."P_TC_DATA" AS DAT,
"B_CC"."CC_CONSENT_RECORD" AS SUBID,
"B_TRACE"."P_TC_RECORD" AS TR
WHERE TR."P_SERIAL_ID" = SUBID."SUBJECT_ID"
AND TR."P_SERIAL_ID" = DAT."P_SERIAL_ID"
AND (DAT."STATE_ID" IN ('7','8','9'))
AND (SUBID."SUBJECT_C_ID" IS NOT NULL)
Еще одна попытка, еще 146 рядов
SELECT DATS.*, SUBID.*, TR.*
FROM (select * from "B_TRACE"."P_TC_DATA" DAT WHERE DAT."STATE_ID" IN ('7','8','9')) AS DATS,
"B_CC"."CC_CONSENT_RECORD" AS SUBID,
"B_TRACE"."P_TC_RECORD" AS TR
WHERE TR."P_SERIAL_ID" = SUBID."SUBJECT_ID"
AND TR."P_SERIAL_ID" = DATS."P_SERIAL_ID"
AND (SUBID."SUBJECT_C_ID" IS NOT NULL)
некоторые попытки
--got 379 rows
SELECT SUBID.*, TR.*
FROM
"B_CC"."CC_CONSENT_RECORD" AS SUBID,
"B_TRACE"."P_TC_RECORD" AS TR
WHERE TR."P_SERIAL_ID" = SUBID."SUBJECT_ID"
--got 91 rows
SELECT DATS.*, SUBID.*
FROM (SELECT * FROM "B_TRACE"."P_TC_DATA" DAT WHERE DAT."STATE_ID" IN ('7','8','9')) AS DATS,
"B_CC"."CC_CONSENT_RECORD" AS SUBID,
WHERE SUBID."SUBJECT_ID"=DATS."P_SERIAL_ID"
--got 181 rows
SELECT DATS.*, TR.*
FROM (SELECT * FROM "B_TRACE"."P_TC_DATA" DAT WHERE DAT."STATE_ID" IN ('7','8','9')) AS DATS,
"B_TRACE"."P_TC_RECORD" AS TR
WHERE TR."P_SERIAL_ID" = DATS."P_SERIAL_ID"