SQL sprawdzający różnice między tabelami - update

SQL sprawdzający różnice między tabelami - update
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

Hej,

mam 2 tabele w dwóch różnych bazach danych i chcę sprawdzić jakie były różnice między nimi.
W załączeniu.

Mam już sql'a, który sprawdza co było dodane:

Kopiuj
SELECT Current.*
FROM [Current] LEFT JOIN Previous ON Current.Order= Previous.Order
WHERE (((Previous.Order) Is Null));

co było skasowane:

Kopiuj

SELECT Previous.*
FROM [Current] RIGHT JOIN Previous ON Current.Order = Previous.Order
WHERE (((Current.Order) Is Null));

a teraz potrzebuję uzyskać co było ZMIENIONE.

Czyli wynik:
D = 1, Name = Paul, System = Windows 10,
ID = 2, Name = Peter Gladosz, System = Linux 4

Te 2 Id były zmienione stąd też to chcę mieć w wyjściowej kwarendzie...

Proszę o pomoc,

Pozdrawiam,
Jacek

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

W załączonym przykładize jest rozwiązanie ale w kilku kwarendach, oraz z kodem VBa.
Czy da się to zrobić jednym SQLkiem? (na pewno sie da!:P)

Jacek

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1

No to pozostaje alternatywa w join:

Kopiuj
SELECT 
    Current.Order
    ,Current.System AS [System NewValue]
    ,Previous.System AS [System OldValue]
    ,Current.Name AS [Name NewValue]
    ,Previous.Name AS [Name OldValue]

FROM 
    [Current] 
    INNER JOIN Previous ON Current.Order = Previous.Order 
                                              and ( 
                                                     Current.System<>[Previous].[System]
                                                     or
                                                     Current.Name<>[Previous].[Name]
                                                     )
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

zajebiście dziękuję !!

Działa idealnie,
dzięki !

Jacek

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

Hej,

sorki muszę odkopać temat.
Czy jest możliwość, aby SQLkiem w danym zadaniu pokazać puste miejsca jeśli wartości są takie same?

Czyli jeśli mam w tabeli Current imię Paul, w previous też Paul to newValue powinno być puste ponieważ Name=Name.

Lub wynik:
ID, NewSystemValues, NewNameValues

i tam gdzie wartości są takie same jak w poprzedniej tabeli dać puste miejsca.

Pozdrawiam,
Jacek

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

Iif(current.name=previous.name,"",current.name) as newname

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

dziękuję bardzo !

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.