内部联接的SQL查询

时间:2014-12-19 11:10:49

标签: sql sql-server-2008 sql-server-2008-r2

有三个表Master,Regular和Customer。

我将MasterI和Regular中的ControlId保存在客户主数据中。我想从客户记录中获取Master的资料。

使用下面的查询。我可以从常规获得MasterID但我想要个人资料。

查询

select * from customer where refId='R000003'
    (select ControlId from regular where LicenseId='R000003')

结果

enter image description here

主表

enter image description here

常规表

enter image description here

我的查询是..

SELECT        Customer.CustomerId, Regular.LicenseId, Regular.ControlId, 
              Master.FullName, Master.profile
FROM          Customer INNER JOIN
              Regular ON Customer.RefId = Regular.LicenseId INNER JOIN
              Master ON Regular.ControlId = Master.MasterId                            
WHERE        (Customer.RefId = 'R000003') 

但它显示了Regural只有我想要Masters记录......

3 个答案:

答案 0 :(得分:0)

这是什么意思?我不确定..

select regular.ControlId, master.profile
from regular r inner join master m ON (r.controlId = m.masterId)
where regular.LicenseId='R000003'

答案 1 :(得分:0)

发布数据图片无济于事。没人打算输入。 粘贴样本。

答案 2 :(得分:0)

我猜猜RefIdLicenseId互相引用。我想这是你想要的查询:

select c.*, m.profile
from customer c join
     regular r
     on c.refId = r.LicenseId join
     master m
     on r.controlId = m.MasterId;

我建议你修理你的桌子。不同表中的连接键应具有相似的名称,因此您知道它们排成一行。事实上,我几乎总是将我的连接键命名为“Id”,因此这个查询看起来更像是:

select c.*, m.profile
from customer c join
     regular r
     on c.CustomerId = r.CustomerId join
     master m
     on r.MasterId = m.MasterId;