Лучший способ объединить 2 таблицы в SQL Server 2008 - PullRequest
0 голосов
/ 16 ноября 2010

Я пытаюсь объединить две одинаковые (не точные) таблицы в одну таблицу.Получаете много ошибок. Есть идеи, как лучше всего это сделать?

Ответы [ 3 ]

2 голосов
/ 16 ноября 2010

Рассматривали ли вы:

  1. Создайте представление для объединения двух таблиц с предложением where, ограничивающим число строк для более быстрого выполнения во время разработки представления
  2. Послепредставление является правильным, сделайте «выбор в» с условием где 1 = 2.Это даст вам пустую таблицу с именами столбцов и типами данных из представления
  3. Измените дизайн таблицы, включив в него столбец идентификаторов, настройте типы данных, имена столбцов и т. Д.
  4. Вставьте данные из представленияв таблицу
  5. Создание индексов и FK при необходимости
  6. Переименование таблиц при необходимости
  7. Удаление представления

Остерегайтесь роста журнала транзакций

1 голос
/ 16 ноября 2010

Я вижу, что в tblDVPage нет поля Type для хранения tblDVpagecategory.type, если вы хотите объединить последний с первым, поэтому вам может потребоваться создать для него новый столбец или удерживать tblDVpagecategory.type с помощью tblDVPage.pageType.

В любом случае у вас будет что-то похожее на это:

INSERT INTO tblDVPage(Title, ParentId, PageType, MenuOrder)
SELECT Title, ParentId, Type, MenuOrder
FROM tblDVpagecategory

Очевидно, что ваши старые идентификаторы в tblDVpagecategory исчезнут и будут обновлены, когда элементы объединены в tblDVPage.Если вы хотите различать что-то с новым столбцом, но зависит от вашего сценария.

1 голос
/ 16 ноября 2010

Я запутался, вы отмечаете вопрос SQL Server 2005, но вы спрашиваете о 2008? Если вы действительно используете 2008, попробуйте использовать MERGE (Transact-SQL) , который доступен только в SQL Server 2008.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...