用于从多行获取数据的SQL查询

时间:2015-02-03 08:46:09

标签: sql oracle

您好我需要遍历三个不同的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条目。

2 个答案:

答案 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 (+)