2017-01-04 4 views
1

PL-SQL Developer의 테이블에 조인하려고 합니다만 명백한 일대 다 관계에도 불구하고 출력에는 FED_ST_PRJ_NBR 및 QP_PROJECTNUMBER 필드가 일치하는 행이 세 개뿐입니다. SURFACING_HISTORY_REPORT의 모든 데이터가 출력에 포함되도록 오른쪽 조인을 수행했습니다. 다음은 아주 간단합니다, 내가 사용하고있는 SQL 쿼리입니다 :일대 다 관계에도 불구하고 테이블이 연결되지 않습니다

create or replace view PROJECT_NUMBERS_GROUPED as 
select t.FED_ST_PRJ_NBR,t.ROUTE_NBR,t.BEG_TERMINI, 
t.END_TERMINI,t.LAT,t.LNGTD 
from SITE_MANAGER t 
group by t.FED_ST_PRJ_NBR,t.ROUTE_NBR,t.BEG_TERMINI, 
t.END_TERMINI,t.LAT,t.LNGTD 
order by t.FED_ST_PRJ_NBR 
; 
--create or replace view SITE_MANAGER_COMBINED AS 
select distinct t.route_nbr,t.beg_termini, 
t.end_termini,t.lat,t.lngtd,t.FED_ST_PRJ_NBR,s.* 
from PROJECT_NUMBERS_GROUPED t right join SURFACING_HISTORY_REPORT s  
on t.fed_st_prj_nbr = s.QP_PROJECTNUMBER 
order by t.route_nbr 

특정하기 위해, 나는 t에 기본 키를 생성하여 일대 다 관계가 t.fed_st_prj_nbr 및 s.QP_PROJECTNUMBER 사이에 존재하는지 확인 .fed_st_prj_nbr 다른 테이블에 그것은 잘 작동했습니다. 여기에 참여하려는 두 가지 데이터 세트가 있습니다. 첫 번째 테이블은 PROJECT_NUMBERS_GROUPED 테이블의 일부입니다. 1600 중 행이 제대로

QP_PROJECTNUMBER QP_PROJECTNAME QMI_NAME QMI_ITEMNUMBER 
ARRA 101-1(4)2 SMELTER AVE & 10TH ST N-GREAT FALLS PLANT MIX GR D - COMMERCIAL TESTED 401020022 
ARRA 101-1(4)2 SMELTER AVE & 10TH ST N-GREAT FALLS PLANT MIX GR D - COMMERCIAL TESTED 401020022 
ARRA 1028(4) LOCKWOOD - SOUTHEAST PLANT MIX GR D - COMMERCIAL TESTED 401020022 
ARRA 1028(4) LOCKWOOD - SOUTHEAST PLANT MIX GR D - COMMERCIAL TESTED 401020022 
ARRA 1031(11) SHILOH ROAD CORRIDOR-BILLINGS PLANT MIX BIT SURF GR S - 19 MM 401080000 
ARRA 1031(11) SHILOH ROAD CORRIDOR-BILLINGS PLANT MIX BIT SURF GR S - 19 MM 401080000 
ARRA 1031(11) SHILOH ROAD CORRIDOR-BILLINGS PLANT MIX BIT SURF GR S - 19 MM 401080000 
ARRA 11-1(51)53 LIVINGSTON - NE PLANT MIX BIT SURF GR S - 3/4 IN 401020045 
ARRA 11-1(51)53 LIVINGSTON - NE PLANT MIX BIT SURF GR S - 3/4 IN 401020045 
ARRA 11-1(51)53 LIVINGSTON - NE PLANT MIX BIT SURF GR S - 3/4 IN 401020045 
ARRA 15(90) KBP - US 93 TO AIRPORT RD PLANT MIX BIT SURF GR S - 19 MM 401080000 
ARRA 15(90) KBP - US 93 TO AIRPORT RD PLANT MIX GR D - COMMERCIAL TESTED 401020507 
ARRA 15(90) KBP - US 93 TO AIRPORT RD PLANT MIX BIT SURF GR S - 19 MM 401080000 
ARRA 15(90) KBP - US 93 TO AIRPORT RD PLANT MIX GR D - COMMERCIAL TESTED 401020507 
ARRA 15(92) KBP - FOYS LAKE RD TO US 2 PLANT MIX GR D - COMMERCIAL TESTED 401020507 
ARRA 15(92) KBP - FOYS LAKE RD TO US 2 PLANT MIX GR D - COMMERCIAL TESTED 401020507 
ARRA 15(92) KBP - FOYS LAKE RD TO US 2 PLANT MIX BIT SURF GR S - 19 MM 401080000 

에 가입해야 더 많은 세 단지보다 여기

FED_ST_PRJ_NBR ROUTE_NBR BEG_TERMINI END_TERMINI LAT LNGTD 
AR 29148   LOCAL 0.1    472927 1112041 
ARRA 0002(874)  DIST WIDE    470636 1044251 
ARRA 101-1(4)2  N-101 2.34 2.43 473129 1111724 
ARRA 1028(4)  U-1028 0.12 1.46 454754 1082627 
ARRA 1031(11)  U-1031 1.938 2.912 454544 1083703 
ARRA 1031(9)  U-1031 4.762 2.912 474405 1083703 
ARRA 11-1(51)53  P-11 53.2 57.9 454005 1103302 
ARRA 13-1(45)37  P-13 36.8   451141 1114044 
ARRA 15(90)   N-5  0.007 1.506 480933 1141816 
ARRA 15(91)   N-5  1.506 3.046 481033 1141924 
ARRA 15(92)   N-5  3.046 3.994 481124 1142001 
ARRA 15-2(81)125 I-15 125.5 126.2 455930 1123254 
ARRA 15-4(89)240 I-15     470514 1115740 
ARRA 16(73)   LOCAL     454032 1110107 
ARRA 1806(8)  U-1806 0.0 0.7   455958 1123141 
ARRA 1810(4)  U-1810 0.1 1.4   455957 1123004 
ARRA 235-1(11)2  S-235 1.9 4.5   454346 1110711 
ARRA 25(50)   LOCAL 0.7 1.5   463616 1115559 
ARRA 260-1(5)0  S-260 0.0 3.6   482442 1153432 
ARRA 27-1(9)2  P-27 2.3 6.8   455434 1043208 

과는 다른 데이터 세트 (열과 행의 몇)의 일부입니다. 데이터 유형 문제입니까? 나는 또한 시도했다 :

on t.fed_st_prj_nbr like s.QP_PROJECTNUMBER 

그리고 아무것도 바뀌지 않았다. 뭐가 문제 야?

+1

? 각 열의 시작/끝에 공백이 있습니까? (예 : 조인 조건을'trim (t.fed_st_prj_nbr) = s.qp_projectnumber'로 변경하면 어떻게됩니까? trim()을's.qp_projectnumber' 열에 추가하거나 옮겨야 할 수도 있습니다 .. – Boneist

+0

그게 전부입니다! 그것은 매우 고맙습니다. 나는 그 생각을하지 않았을 것입니다. 대답을 위해 그 자리를 만들어보세요. –

+0

나는 t.fed_st_prj_nbr을 다듬 었습니다. –

답변

1

t.fed_st_prj_nbr 열에 후행 (및/또는 선행) 공백이있는 것 같습니다.

시도하는 조인 조건을 변경 :

t.fed_st_prj_nbr``의 데이터 유형과`s.QP_PROJECTNUMBER`이 무엇인지
trim(t.fed_st_prj_nbr) = s.qp_projectnumber 
+1

... 처음부터 데이터를 정리하려고합니다. 이상적인 것보다'trim()'을 사용해야합니다. – mathguy