2015-02-24 1 views
0

Я хочу объединить таблицу IndirectFlights в PriceTable. У меня нет идентификаторов, введенных в SourceTable (IndirectFlights), и я еще не установил PK для него. Столбец ID для PriceTable является столбцом Identity (1,1) и также является Первичным ключом.Как слить таблицы и предотвратить столкновение идентификаторов

Qs1 Как ввести идентификаторы в столбце источника, чтобы они не столкнулись с идентификаторами целевой таблицы (PriceTable)? Я думал об использовании последовательности, но потенциально мог столкнуться в будущем. Qs2 Могу ли я выбрать, какие столбцы следует объединить, или я должен объединить все столбцы из таблицы источников?

Target Table (PriceTable) Columns 
IDAirport_ICAO_Code,Airline_ICAO_Code,Departure,Price,RouteStatus,DateRowModified 

Source Table (IndirectFlights) Columns 
IDAirport_ICAO_Code,Destination,Airline,Airline_ICAO_Code,RouteStatus,Connecting Airport 

Edit: Я просто запустить следующий Союз Высказывание в качестве альтернативы использованию Merge.

Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus 
From RoughworkPriceTable 
Union All 
Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus 
From RoughworkIndirectFlights; 

код работал, но я заметил, что столбец ID принял нулевые значения из IndirectFlights.ID Eventhough У меня есть ID столбцов установлена ​​не Null.

Может ли это объяснить это. Также может кто-то расширить, как я могу создать новую постоянную таблицу из этого заявления All Union.

+0

Какую базу данных вы используете - MS SQL Server? Является ли слияние одним, или его нужно повторить? –

+1

, если вам нужно часто их объединять, посмотрите на наличие уникального идентификатора в качестве первичного ключа, риск столкновения почти не существует. – Fredou

+0

Im using Server express 2014. Слияние является одним, но я, возможно, собираюсь снова слить таблицы в зависимости от того, введены ли новые значения в таблицу IndirectFlights. – frustrationmultiplied

ответ

0

Вы можете создать новую таблицу с чем-то вроде

 Select * into newTmpTable from (
     Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus From RoughworkPriceTable 
    Union All 
    Select ID,Airport_ICAO_Code,Airline_ICAO_Code,RouteStatus From RoughworkIndirectFlights) 
as mergedData; 
+0

Большое спасибо за помощь Джону. Я забываю, насколько полезны инструкции Select Into. – frustrationmultiplied