加入两个没有相同列名的表

问题描述 投票:0回答:4

在SQL查询方面,我是一个新手,但我希望有人可以帮助我?

我有两张桌子:

表1包含列:ClientName ScheduleName

表2包含列:VMName BackupStatus

到目前为止,这是我的两个选择陈述:

select * 
from [dbo].[CommCellBkSchedule]
where ClientName LIKE 'KI%'
order by ClientName

select * 
from VMProtectionCoverage (32, '')
where VMName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by VMName

表没有任何相同的列,但VMName和ClientName具有相同的细节,即两个服务器名称。

如何组合表以获取一个select语句中的所有数据?

即我想要服务器名称,backupstatus和schedulename?任何帮助都会很棒。

sql sql-server left-join
4个回答
0
投票

您可以使用INNER JOIN使用以下解决方案:

SELECT CS.ClientName, CS.ScheduleName, VC.BackupStatus 
FROM CommCellBkSchedule CS INNER JOIN VMProtectionCoverage(32, '') VC ON CS.ClientName = VC.VMName 
WHERE CS.ClientName LIKE 'KI%' AND VC.BackupStatus LIKE 'Currently protected'
ORDER BY CS.ClientName

1
投票

基本上,您使用公共列(在本例中为客户端名称和VMName)连接两个表。如果您希望在连接后保留其中一个表而不丢失数据,则可以使用标记中提到的LEFT JOIN。否则,INNER JOIN就可以了。

SELECT b.VMName,b.BackupStatus,a.ScheduleName
FROM [dbo].[CommCellBkSchedule] a
INNER JOIN [dbo].[VMProtectionCoverage] b
on a.ClientName=b.VMName
where ClientName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by ClientName

0
投票
SELECT CBS.ClientName, CBS.ScheduleName, VPC.BackupStatus 
FROM CommCellBkSchedule CBS FULL OUTER JOIN VMProtectionCoverage VPC ON CBS.ClientName = VPC.VMName 
WHERE CBS.ClientName LIKE 'KI%' AND VPC.BackupStatus LIKE 'Currently protected'
ORDER BY CBS.ClientName

0
投票

您可以尝试以下方法:

select * 
from [dbo].[CommCellBkSchedule] , VMProtectionCoverage (32, '')
where ClientName LIKE 'KI%' MName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by ClientName,VMName
© www.soinside.com 2019 - 2024. All rights reserved.