2013-09-20 2 views
1

У меня есть две системы, которые используют одно и то же программное обеспечение из идентичных баз данных. Для отчетности мне нужно сообщить о билетах. Я связал два сервера и создал соединение между двумя таблицами билета, но я все равно получаю дубликаты записей. Программное обеспечение копирует данные билета между двумя системами, однако это отчет для «предварительной» репликации, что означает этоСоздать представление двух идентичных таблиц из двух отдельных систем, чтобы возвращать только уникальные записи

Мне нужны ВСЕ билеты в таблице билета A, и мне нужны только записи из таблицы билета B, которые у меня еще нет , Номер билета уникален в этом случае. Я использую несколько колонок из этих таблиц, таких как идентификатор автомобиля, имя клиента, цена, количество и т. Д. И многие в формулах хорошо. Называть их все было бы действительно обширно. Есть еще один способ, чтобы все столбцы из обеих таблиц в вид, но видят только distnct записи

Я пытался создать представление, как это:

CREATE VIEW vw_combinedtickettable as 
SELECT * 
FROM dbo.Ticket 
UNION 
SELECT * from LinkedServer.Database2.dbo.ticket 

мышления, используя только union и не union all бы работать и нет.

Любая помощь будет отличной.

+0

Вы пробовали НЕ ВХОДИТЬ ИЛИ НЕ СУЩЕСТВУЕТ? – user2065377

+0

'union' должен возвращать уникальные ряды, в то время как' union all' будет возвращать дубликаты. Есть ли другой столбец, который не идентичен между вашими двумя базами данных, а все остальные равны? – beercodebeer

ответ

0

вы могли бы попробовать:

CREATE VIEW vw_combinedtickettable AS 
    SELECT * FROM dbo.Ticket t1 
    UNION ALL 
    SELECT t2.* FROM dbo.Ticket t1 
    LEFT JOIN LinkedServer.Database2.dbo.ticket t2 
    ON t1.id = t2.id 
    AND t1.id IS NULL 

Надеется, что это помогает!

+0

Я пробовал это, и это забросило ошибку. Имена столбцов в каждом представлении или функции должны быть уникальными. Имя столбца «TicketType» в представлении или функции vw_combinedtickettable указано более одного раза. – user2800635

+0

Конечно, извините, не смог проверить его атм. Я с надеждой изменил свой ответ, который должен дать вам желаемый результат. – ASindleMouat

0
SELECT * 
FROM dbo.Ticket 
UNION ALL 
SELECT * 
FROM LinkedServer.Database2.dbo.ticket 
WHERE ticketNumber NOT IN 
     (
     SELECT ticketNumber 
     FROM dbo.Ticket 
     ) 
+0

Я все еще получаю дубликаты, используя вышеупомянутый SQL. Я не понимаю, почему. Я не могу это подтвердить, потому что это вызывает проблемы, когда цифры 34555 и 1234555. он будет подавлять оба. – user2800635

Смежные вопросы