我有三个表,如t_zip5,t_dtv_cnty_eligibility,t_user_activity。 我将根据countyId从t_zip5表中获取所有zipcodes。
这些邮政编码将在t_user_activity表的zip列中查找。如果zip匹配,我将需要获取cuid和actvty列,否则我必须将这些列保留为空或t_zip5表的邮政编码为空。< / p>
我写了以下查询:
select distinct tz.zip,td.DTV_eligible,tu.cuid,tu.actvty_date
from T_ZIP5 tz,T_DTV_CNTY_ELIGIBILITY td,T_USER_ACTIVITY tu
where tz.FIPS_CNTY='51001'
and tz.FIPS_CNTY=td.CNTY_FIPS
and tz.zip=tu.zip
此查询仅提供匹配的邮政编码行。我必须为县的其他邮政编码获取行,即使它不匹配。
Ex:County 51001有40个邮政编码。上面的查询导致我只有3行作为这3个拉链匹配的zip条目。
请帮我解决这个问题。
表结构:
desc t_zip5
Name Null Type
----------------- -------- ------------
ZIP NOT NULL VARCHAR2(5)
FIPS_CNTY VARCHAR2(5)
CITY_NAME NOT NULL VARCHAR2(50)
STATE NOT NULL VARCHAR2(2)
RATE_CENTER_NAME VARCHAR2(10)
RATE_CENTER_STATE VARCHAR2(2)
desc T_DTV_CNTY_ELIGIBILITY
Name Null Type
------------- -------- ------------
CNTY_FIPS NOT NULL VARCHAR2(5)
ZIP_CODE NOT NULL VARCHAR2(5)
DTV_ELIGIBLE CHAR(1)
USER_MODIFIED VARCHAR2(10)
CREATED_DATE DATE
MODIFIED_DATE DATE
desc t_user_activity
Name Null Type
----------- ---- -------------
ACTVTY_DATE DATE
ACTVTY_NAME VARCHAR2(20)
ACTVTY_DSCR VARCHAR2(200)
CUID VARCHAR2(10)
ZIP VARCHAR2(5)
示例输出:
ZIP DTV_Eligible CUID MODIFIED_DATE
----------- ---- ----------------------
1111 Y xyz 05-02-2015
1111 N xyz 05-02-2015
2222 Y abc 02-02-2015
2222 N abc 02-02-2015
答案 0 :(得分:2)
尝试左连接。内部联接仅返回匹配的值。
select distinct tz.zip,td.DTV_eligible,tu.cuid,tu.actvty_date
from T_ZIP5 tz left join T_DTV_CNTY_ELIGIBILITY td on tz.FIPS_CNTY=td.CNTY_FIPS
left join T_USER_ACTIVITY tu on tz.zip=tu.zip
where tz.FIPS_CNTY='51001'