SQL dwie tabele jak wziąć roznice

0

Hej
Mam takie dwie tabele

CREATE TABLE Dupa1(
	id INT IDENTITY(1,1) PRIMARY KEY,
	data DATETIME,
	opis VARCHAR(64),
	wartosc INT
);

CREATE TABLE Dupa2(
	id INT IDENTITY(1,1) PRIMARY KEY,
	data DATETIME,
	opis VARCHAR(64),
	wartosc INT
);

W tabeli pierwszej jest N wierszy, w drugiej te same N, dodatkowo X nowych

Chciałbym selectem wziąć różnice tych tabel (czyli te X nowych wierszy)

CZEMU TO NIE DZIALA?? ZWRACA MI PODGLĄD dwóch CAŁYCH TABELE W SQL STUDIO

SELECT data, opis, wartosc FROM Dupa2 EXPECT SELECT data, opis, wartosc FROM Dupa1;
1

Spróbuj MINUS

1

Po czym chcesz rozpoznawać rekordy i co oznacza, że rekordy są te same, chodzi o ID? Pytam, bo nie uściśliłeś tego do końca. Poza tym próbowałeś szukać odpowiedzi na to pytanie? Już w pierwszym wyniku https://www.google.com/search?q=sql+missing+records+from+another+table masz sensowną odpowiedź na SO i to w kilku możliwościach.

Ale żeby nie było, że tylko pouczam. Osobiście zrobiłbym to za pomocą left/right join z warunkiem null na kluczowe pole.

Coś na wzór (pisane z palca, może nie działać bo nie sprawdzałem), jednak ogólny zamysł widzisz

select
  DUPA2.ID
from
  DUPA1
  right join DUPA2 on DUPA1.ID=DUPA2.ID
where
  DUPA1.ID is null
1

można jeszcze
select a, b, c from dupa1 where a not in (select a from dupa3)

0

Jak rozumiem to chcesz użyć EXCEPT, a używasz EXPECT, co może sprawiać, że wynik który dostajesz jest inny od oczekiwanego.

0

Nie rob fikolkow z EXPECTEM! Rozwaz to co napisal Ci Mr.YaHooo. Ciezko powiedziec czym sa te Twoje dane, bo z definicji tabel to nie wynika. Generalnie JOIN powinien byc Twoim wyborem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1