2014-10-23 6 views
-1

Мне нужно взять таблицу У меня есть origArticleTable, которая содержит Title,date1, date2,author, articleText, hasVideo, hasImage, ArticleID и разбить ее на две таблицы. Мне нужны две таблицы, потому что мне приходится включать данные из других источников, которые не содержат все одинаковое содержимое. например, у другого источника будет таблица, содержащая title, itemDescription, date1, urlLink, comments, uniqueID.разделите таблицу DB на две таблицы

В основном я перемещаю свой origArticleTable в «составную» таблицу, таблицу мета или таблицу поддержки, и для этого у меня есть вопрос «когда я вставляю в CompositeTable, могу ли я вложить или что-то другое вставить для заполнения ArticleMeta с идентичностью, порожденной вставкой в ​​CompositeTable "

Я разобью их здесь:

compositeTable 
    ID (auto-incrementing identity column) 
    Title 
    date1 
    TextContent 


ArticleMeta 
    compositeID 
    ArticleID 
    hasVideo 
    hasImage 
    author 
    date2 

То, что я не уверен в том, как сделать, это вставить данные из моей текущей таблицы в эти два столы. Я не могу поместить данные в ArticleMeta, не имея соответствующей записи в CompositeTable. Я понимаю, что я вставляю элемент в CompositeTable и используя ID, вставьте оставшуюся информацию в ArticleMeta.

Я попытался разработать insert-select заявление, используя присоединяется объединить origArticleTable и CompositeTable с участием вставки в CompositeTable, но не увенчались успехом в ничего, что даже выглядит, как он будет работать здание.

Любая помощь была бы принята с благодарностью. Если есть что-то, что нуждается в лучшем объяснении или что-нибудь, дайте мне знать.

Редактировать ---- вот insert-select беспорядок, с которым я пытался работать. Он изменился с тех пор, как я начал.

insert into ArticleMeta (compositeID, ArticleID, hasVideo, hasImage, author, date2) 
    select id from (insert into CompositeTable (Title, date1, textContent) 
         select Title, date1, articleText 
          from origArticleTable) 
    join 
    select ArticleID, hasVideo, hasImage, author, date2 
     from origArticleTable 
+0

По какой-то причине вы не можете просто отметить некоторые столбцы как NULLABLE? – Bill

+0

Можете ли вы редактировать сообщение о попытке вставить-выбрать и почему это не сработало? –

+0

@TabAlleman Я добавлю это сразу. – shadonar

ответ

1

Если название является уникальным ключом в исходной таблице, тогда сделайте что-нибудь подобное. Если уникальный ключ из исходной таблицы не будет в новой таблице, добавьте его временно и затем отпустите его.

DECLARE @T1 TABLE (Title varchar(50), NewID int) 
INSERT INTO compositeTable (Title, date1, TextContent) 
OUTPUT inserted.Title, Inserted.ID INTO @T1 
SELECT compositeTable (Title, date1, TextContent) 
FROM origArticleTable 


insert into ArticleMeta (compositeID, ArticleID, hasVideo, hasImage, author, date2) 
SELECT T1.ID, o.compositeID, o.ArticleID, o.hasVideo, o.hasImage, o.author, o.date2 
FROM @T1 T1 
INNER JOIN origArticleTable o ON T1.Title = o.Title 
Смежные вопросы