加入多个表格

时间:2013-12-17 20:10:32

标签: sql-server tsql sum inner-join

我有一个mssql数据库名称Organization

我有3张桌子:

Table 1 named Organization
Table 2 named Product
Table 3 named IPAddress

表1返回约1000个结果,这很好。

SELECT distinct OrganizationName, AssetNumber
FROM OrganizationList 
Where OrganizationName = 'orgname'

我希望看到的是每个组织的资产编号。我不知道该怎么做。我知道需要一个加入,并尝试了一些来自网络的例子,但是我无法让它发挥作用。

此外,我希望能够获得每个资产的IP地址

我遇到的问题是我需要将来自组织的OrganizationID col与来自Product的OrganizationID col匹配,我需要匹配Product的ProductId和{{ 1}}来自ProductId

非常感谢任何帮助。如果您需要更多信息,请与我们联系。

谢谢

4 个答案:

答案 0 :(得分:0)

我在这里做一些猜测,因为你没有向我们提供完全帮助你所需的所有信息。以下查询如何:

SELECT DISTINCT o.OrganizationName, p.AssetNumber, ip.IPaddress
FROM Organization AS o
  INNER JOIN Product AS p
  ON o.OrganizationID = p.OrganizationID
  INNER JOIN IPAddress AS ip 
  ON p.ProductId  = ip.ProductId
Where o.OrganizationName = 'orgname'

我认为没有必要加入OrganizationList表。如果确实需要它,请添加以下连接:

INNER JOIN OrganizationList AS ol
ON o.OrganizationID = ol.OrganizationID

答案 1 :(得分:0)

还应该为您列出IP地址。

SELECT distinct c1.OrganizationName, c2.AssetNumber, c3.IPAddress
FROM Organization c1

INNER JOIN Product c2
    ON c1.OrganizationID = c2.OrganizationID
INNER JOIN IPAddress c3
    ON c2.ProductId = c3.ProductId

Where c1.OrganizationName = 'orgname'

答案 2 :(得分:0)

用户user3022598 在临时表中获取此查询的结果:

SELECT distinct o.OrganizationName,p.AssetNumber,i.IPAddress 来自组织o

INNER JOIN产品p     ON o.OrganizationID = p.OrganizationID INNER JOIN IPAddress i     ON p.ProductId = i.ProductId

其中o.OrganizationName ='orgname'

然后你可以在ipaddress字段上应用disctint。

答案 3 :(得分:-2)

试试这个:

select o.OrgName, o.AssetNo
from OrgList o
join Prdct p 
on o.orgid = p.orgid
Union All
select p.productid/name, i.ipadress 
from product p
join ipadres i 
on p.prdid=i.prdid

Plz检查&让我知道是否有效。