您好我需要遍历三个不同的Oracle数据库表并获取数据。
我将通过countyId从ZIP表中获取所有zipcode。根据从ZIP表中检索到的zipcode数量,我将传递每个邮政编码以在另一个表中验证它。基于此zipCode,ACTIVITY表将返回该zipCode的行。
如何编写SQL查询来实现此目的。我听说有虚拟表创建概念,但我对此并不了解。
请给我高级别的观点,我该怎么办??
我尝试了以下查询,但没有检索到结果 - 0行
select T_ZIP5.zip,
T_DTV_CNTY_ELIGIBILITY.DTV_eligible,
T_USER_ACTIVITY.cuid,
T_USER_ACTIVITY.actvty_date
from T_ZIP5
join T_DTV_CNTY_ELIGIBILITY
on T_ZIP5.FIPS_CNTY=T_DTV_CNTY_ELIGIBILITY.CNTY_FIPS
join T_USER_ACTIVITY
on T_DTV_CNTY_ELIGIBILITY.zip_code=T_USER_ACTIVITY.zip
where T_ZIP5.FIPS_CNTY='53033'
表结构:
desc t_zip5
----------------- -------- ------------
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
------------- -------- ------------
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
----------- ---- -------------
ACTVTY_DATE DATE
ACTVTY_NAME VARCHAR2(20)
ACTVTY_DSCR VARCHAR2(200)
CUID VARCHAR2(10)
ZIP VARCHAR2(5)
53033是countyCode
县的Zip出现在T_USER_ACTIVITY表中。但是在给定的县53033的T_ZIP5表中有多个zip条目。
答案 0 :(得分:0)
您可以使用联接查询。 假设你有三张桌子 国家(country_id) 2. zip(zip_id,country_id,zipcode) 3. test(test_id,zipcode);
所以查询如
SELECT zip.zipcode
FROM country
JOIN zip on zip.country_id = country.country_id
JOIN test on test_id.zipcode = zip.test_id
Where country.country_id = 10
在这里你可以使用左,右连接取决于你的记录需要,你的邮政编码将是一个条目,你得到的结果作为多个记录。
答案 1 :(得分:0)
此查询解决了问题..
select unique T_ZIP5.zip,T_ZIP5.FIPS_CNTY,T_DTV_CNTY_ELIGIBILITY.DTV_eligible,
T_USER_ACTIVITY.cuid,T_USER_ACTIVITY.actvty_date ,T_DTV_CNTY_ELIGIBILITY.zip_code from T_ZIP5,T_DTV_CNTY_ELIGIBILITY,T_USER_ACTIVITY where T_ZIP5.FIPS_CNTY='53033'and T_ZIP5.FIPS_CNTY=T_DTV_CNTY_ELIGIBILITY.CNTY_FIPS and T_ZIP5.zip=T_USER_ACTIVITY.zip (+)