WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.10.2008, 12:53   #1
MANX
Inventar
 
Registriert seit: 27.02.2001
Beiträge: 1.967


Standard 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
____________________________________
Broadcasting from the Isle of Man:
>> Manx Radio <<
MANX ist offline   Mit Zitat antworten
Alt 28.10.2008, 13:02   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

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)
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 28.10.2008, 13:09   #3
MANX
Inventar
 
Registriert seit: 27.02.2001
Beiträge: 1.967


Standard

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
____________________________________
Broadcasting from the Isle of Man:
>> Manx Radio <<
MANX ist offline   Mit Zitat antworten
Alt 28.10.2008, 17:58   #4
FranzK
Inventar
 
Registriert seit: 23.03.2000
Ort: Graz
Alter: 71
Beiträge: 3.567


Standard

SELECT
*
FROM tab1, tab2
EXCEPT SELECT
*
FROM Tab1, Tab2
WHERE (Tab1.RG_NR = Tab2.RG_NR)
AND (Tab1.REC_NR = Tab2.REC_NR)
____________________________________
Ciao
FranzK ist offline   Mit Zitat antworten
Alt 29.10.2008, 08:27   #5
MANX
Inventar
 
Registriert seit: 27.02.2001
Beiträge: 1.967


Standard

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
____________________________________
Broadcasting from the Isle of Man:
>> Manx Radio <<
MANX ist offline   Mit Zitat antworten
Alt 29.10.2008, 16:58   #6
FranzK
Inventar
 
Registriert seit: 23.03.2000
Ort: Graz
Alter: 71
Beiträge: 3.567


Standard

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...
____________________________________
Ciao
FranzK ist offline   Mit Zitat antworten
Alt 30.10.2008, 07:59   #7
MANX
Inventar
 
Registriert seit: 27.02.2001
Beiträge: 1.967


Standard

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
____________________________________
Broadcasting from the Isle of Man:
>> Manx Radio <<
MANX ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:30 Uhr.


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