Соедините две таблицы без идентичных имен Colum - PullRequest
0 голосов
/ 28 марта 2019

Я новичок, когда дело доходит до запросов SQL, но я надеюсь, что кто-то может мне помочь?

У меня есть две таблицы:

В первой таблице есть столбцы: ClientName ScheduleName

В таблице два есть столбцы: 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 имеют одинаковые данные, т.е. оба имени сервера.

Как объединить таблицы, чтобы получить все данные в одном операторе выбора ??

т.е. я хочу серверимена, backupstatus и schedulename?Любая помощь будет великолепна.

Ответы [ 4 ]

1 голос
/ 28 марта 2019

По сути, вы объединяете обе таблицы с общим столбцом, в данном случае с именем клиента и VMName. Если вы хотите, чтобы одна из этих таблиц сохранялась без потери данных после объединения, вы можете использовать LEFT 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 голосов
/ 28 марта 2019

Вы можете попробовать следующее:

select * 
from [dbo].[CommCellBkSchedule] , VMProtectionCoverage (32, '')
where ClientName LIKE 'KI%' MName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by ClientName,VMName
0 голосов
/ 28 марта 2019
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 голосов
/ 28 марта 2019

Вы можете использовать следующее решение, используя 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
...