WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   MS-SQL ungleiche Spaltenpaare finden! (http://www.wcm.at/forum/showthread.php?t=231454)

MANX 28.10.2008 12:53

MS-SQL ungleiche Spaltenpaare finden!
 
Hi @all!

Ich hab da eine Access-Anwendung, die inkonsistenten Tabellen liegen auf einem MS-SQL Server.

Jetzt möchte ich gerne aus zwei Tabellen ungleiche Spaltenpaare herausfinden.

Beispiele:
Code:

TAB1   
   
RG_NR    REC_NR
100    1
100    2
100    3
100    4
201    55
300    1
300    2
400    1
400    2
400    5
500    5
800    2

TAB2   

RG_NR    REC_NR
100    1
100    2
100    3
202    56
300    2
300    3
400    2
600    5
700    2

So finde ich die gleichen Spaltenpaare:
Code:

SELECT * FROM Tab1, Tab2
WHERE Tab1.RG_NR = Tab2.RG_NR
AND Tab1.REC_NR = Tab2.REC_NR

Wie finde ich die ungleichen?

Grüße & Danke!

Manx

PS: Hab mit SQL nicht wirklich viel am Hut

pong 28.10.2008 13:02

select * from tab1, tab2
where not exists
(
SELECT * FROM Tab1, Tab2
WHERE Tab1.RG_NR = Tab2.RG_NR
AND Tab1.REC_NR = Tab2.REC_NR)

MANX 28.10.2008 13:09

Hi pong!

So findet er leider gar nichts.

Ich hab's bisher so probiert:
Code:

SELECT * FROM Tab1
WHERE RG_NR NOT IN
(
SELECT Tab1.RG_NR FROM Tab1, Tab2
WHERE Tab1.RG_NR = Tab2.RG_NR
AND Tab1.REC_NR = Tab2.REC_NR

OR Tab1.REC_NR NOT IN
(
SELECT Tab1.REC_NR FROM Tab1, Tab2
WHERE Tab1.RG_NR = Tab2.RG_NR
AND Tab1.REC_NR = Tab2.REC_NR
)

gefunden wird:
Code:

100    4
201    55
400    5
500    5
800    2

nicht gefunden wird:
Code:

300    1
400    1

Grüße & Danke!

Manx

FranzK 28.10.2008 17:58

SELECT
*
FROM tab1, tab2
EXCEPT SELECT
*
FROM Tab1, Tab2
WHERE (Tab1.RG_NR = Tab2.RG_NR)
AND (Tab1.REC_NR = Tab2.REC_NR)

MANX 29.10.2008 08:27

Hi und Danke euch beiden!

@FranzK

MS-SQL 2003 :(

aber so schaut's gut aus:
Code:

SELECT * FROM Tab1
WHERE NOT EXISTS
(SELECT *
FROM Tab2
WHERE Tab1.RG_NR = Tab2.RG_NR
AND (Tab1.REC_NR = Tab2.REC_NR)
)

Grüße!

Manx

FranzK 29.10.2008 16:58

Hi

Ja, stimmt. Bei MS gibt es den EXCEPT-Operator erst ab 2005.

Aber deine Lösung erscheint mir verdächtig. Ich fürchte, sie unterschlägt Records aus Tab2, die nicht in Tab1 aufscheinen...

MANX 30.10.2008 07:59

Hi!

Danke für den Hinweis, soll mir egal sein, ich brauch nur alle fehlenden Rows aus Tab1 in Tab2, was funktioniert hat.

Danke!

Manx

PS: eigentlich ist es ein MS-SQL 2000


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag