Oracle 尽管存在一对多关系,但表不会联接

Oracle 尽管存在一对多关系,但表不会联接,oracle,join,oracle11g,plsqldeveloper,Oracle,Join,Oracle11g,Plsqldeveloper,我试图在PL-SQL Developer中连接到表,但尽管存在明显的一对多关系,但输出只有三行字段FED_ST_PRJ_NBR和QP_PROJECTNUMBER匹配。我做了一个正确的连接,这样来自Surface_HISTORY_报告的所有数据都将包含在输出中。以下是我使用的sql查询,非常简单: create or replace view PROJECT_NUMBERS_GROUPED as select t.FED_ST_PRJ_NBR,t.ROUTE_NBR,t.BEG_TERMINI,

我试图在PL-SQL Developer中连接到表,但尽管存在明显的一对多关系,但输出只有三行字段FED_ST_PRJ_NBR和QP_PROJECTNUMBER匹配。我做了一个正确的连接,这样来自Surface_HISTORY_报告的所有数据都将包含在输出中。以下是我使用的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.fed_st_prj_nbr创建主键,检查了t.fed_st_prj_nbr和s.QP_PROJECTNUMBER之间是否存在一对多关系,结果很好。下面是我试图连接的两个数据集的片段。第一个是项目编号分组表的一部分

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
这是另一个数据集的一部分,只是一些列和行:

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
1600行中有三行以上的行应该正确连接。这是数据类型问题吗?我还尝试:

on t.fed_st_prj_nbr like s.QP_PROJECTNUMBER

这并没有改变任何事情。怎么了?

似乎在t.fed\u st\u prj\u nbr列中可能有尾随和/或前导空格

尝试将联接条件更改为:

trim(t.fed_st_prj_nbr) = s.qp_projectnumber

似乎在t.fed_st_prj_nbr列中可能有尾随和/或前导空格

尝试将联接条件更改为:

trim(t.fed_st_prj_nbr) = s.qp_projectnumber

t.fed_st_prj_nbr和s.QP_PROJECTNUMBER的数据类型是什么?每列的开头/结尾是否有空格?e、 g.如果将连接条件更改为trimt.fed\u st\u prj\u nbr=s.qp\u projectnumber,会发生什么情况?您可能还需要将修剪添加或移动到s.qp_projectnumber列。就是这样!很漂亮,谢谢你。我不会想到的。继续写一篇文章作为答案。我确实在t.fed_st_prj_上做了修剪。更好的是,你可以调查一下,为什么你会在不期望的地方有空间。它们是多余的吗?如果是这样,您是否最好使用UPDATE语句清理数据?如果必须使用trim之类的包装器来阻止索引的使用,那么除了函数本身增加的执行时间开销之外,t.fed_st_prj_nbr和s.QP_PROJECTNUMBER的数据类型是什么?每列的开头/结尾是否有空格?e、 g.如果将连接条件更改为trimt.fed\u st\u prj\u nbr=s.qp\u projectnumber,会发生什么情况?您可能还需要将修剪添加或移动到s.qp_projectnumber列。就是这样!很漂亮,谢谢你。我不会想到的。继续写一篇文章作为答案。我确实在t.fed_st_prj_上做了修剪。更好的是,你可以调查一下,为什么你会在不期望的地方有空间。它们是多余的吗?如果是这样,您是否最好使用UPDATE语句清理数据?如果您必须使用像trim这样的包装器来阻止索引的使用,那么除了函数本身增加的执行时间开销之外。。。。或者首先尝试清理数据;需要使用这样的修剪是不理想的。。。。或者首先尝试清理数据;需要使用这样的修剪是不理想的。