“每个申请人可以有一个或多个表格”的声明不符合您的模式。
Form
实体与
Application
实体,但不是
Applicant
一。
最好有你得到重复的样本数据。
WITH
APPLICATION (Serial) as (values
(1)
)
, FORM (Serial, Application_serial) as (values
('001', 1)
--, ('002', 1)
)
, APPLICANT (Serial, Application_Serial, First_Name, Last_Name) as (values
(1, 1, 'John', 'Doe')
, (2, 1, 'Jane', 'Doe')
)
, ADDRESS (Serial, Applicant_Serial, Street, City, State, Postal_code) as (values
(1, 1, '123 Main Street', 'Magical City', 'ZZ', '00000')
, (2, 2, '456 Y Street', 'Another City', 'ZZ', '00000')
)
SELECT
APPLICANT.FIRST_NAME, APPLICANT.LAST_NAME
, ADDRESS.STREET, ADDRESS.CITY, ADDRESS.STATE, ADDRESS.POSTAL_CODE
, FORM.SERIAL AS FORM_SERIAL
FROM APPLICATION
JOIN FORM ON FORM.APPLICATION_SERIAL = APPLICATION.SERIAL
JOIN APPLICANT ON FORM.APPLICATION_SERIAL = APPLICANT.APPLICATION_SERIAL
JOIN ADDRESS ON APPLICANT.SERIAL = ADDRESS.APPLICANT_SERIAL;
FIRST_NAME LAST_NAME STREET CITY STATE POSTAL_CODE FORM_SERIAL
---------- --------- --------------- ------------ ----- ----------- -----------
John Doe 123 Main Street Magical City ZZ 00000 001
Jane Doe 456 Y Street Another City ZZ 00000 001
2 record(s) selected.
我的示例不返回重复项。
但是如果你取消注释第二个
形式
其中
应用
(不是)
申请人
)也就是说这是第二次
形式
记录是在输出中获得重复项的原因。
你应该决定在
FORM_SERIAL
多列
Forms
对于给定
应用
。