在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?任何帮助都会很棒。
您可以使用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
基本上,您使用公共列(在本例中为客户端名称和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
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
您可以尝试以下方法:
select *
from [dbo].[CommCellBkSchedule] , VMProtectionCoverage (32, '')
where ClientName LIKE 'KI%' MName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by ClientName,VMName