关于此查询中PL/SQL联接的说明

关于此查询中PL/SQL联接的说明,sql,Sql,我有一个返回377行的查询 Select Cm.Customerid,Cm.Customername,Ad.Addressid,Ad.Addressline1, Stm.Statename,Ctm.Cityname,Dm.Districtname From Crm.Customers Cm inner join Crm.Customeraddress Ad on Ad.Customerid=Cm.Customerid Inner Join Ehis.Statemaster Stm On S

我有一个返回377行的查询

Select Cm.Customerid,Cm.Customername,Ad.Addressid,Ad.Addressline1,
Stm.Statename,Ctm.Cityname,Dm.Districtname 
 From Crm.Customers Cm 
inner join Crm.Customeraddress Ad on Ad.Customerid=Cm.Customerid
Inner Join Ehis.Statemaster Stm On Stm.Stateid=Ad.Stateid
Inner Join Ehis.Citymaster Ctm On Ctm.Cityid=Ad.Cityid
inner join Ehis.Districtmaster dm on Dm.Districtid=Ad.Districtid
但是如果我再加上一个连接,也就是

Select 
Cm.Customerid,Cm.Customername,Ad.Addressid,Ad.Addressline1,
Stm.Statename,Ctm.Cityname,Dm.Districtname 
 From Crm.Customers Cm 
inner join Crm.Customeraddress Ad on Ad.Customerid=Cm.Customerid
inner join crm.agreements ag on ag.customerid=cm.customerid
Inner Join Ehis.Statemaster Stm On Stm.Stateid=Ad.Stateid
Inner Join Ehis.Citymaster Ctm On Ctm.Cityid=Ad.Cityid
inner join Ehis.Districtmaster dm on Dm.Districtid=Ad.Districtid

我的查询没有返回任何行。州议员、市议员和区议员在使用内部联接时是否存在任何问题。请澄清同样的问题。

问题似乎不在州政府主管、城市主管或地区主管身上,因为这些都在返回数据的原始查询中

下面的另一行似乎是罪魁祸首

在ag.customerid=cm.customerid上内部加入crm.ag

据推测,agreements表中没有记录与customers表中的customerid匹配

为了证明这一点,您可以将该行更改为

在ag.customerid=cm.customerid上左键加入crm.ag


如果收回377条记录,则需要检查协议中的数据。

@**richaux**:是的,我发现“协议”表中没有与“客户”表匹配的stateid数据。因此,死锁现在已经解决。