![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos
SQL-Befehl vergleichen zweier Tabellen
Hallo,
ich suche nach einer geschickten SQL-Abfrage die folgendes bewerkstelligt: Ausgangspunkt: Ich habe zwei Tabellen nennen wir sie TabA und TabB. In beiden Tabellen gibt es die Spalte Nummer vom Typ Integer. Nun möchte ich alle Sätze der Tabelle TabA angezeigt bekommen die NICHT in der Tabelle TabB enthalten sind. Beisp: TabA enthält: 1, 2, 3, 4, 5, 6, 7, 8, 9 TabB enthält: 1, 2, 4, 6, 8, 9 also müsste die gesuchte SQL-Abfrage 3, 5, 7 ausgeben. Hat jemand eine Idee oder bekommt man das mit einer SQL-Abfrage nicht hin? Grüße, Peter. |
Re: SQL-Befehl vergleichen zweier Tabellen
Hallo Peter,
die Mengendifferenz kannst du so bilden:
SQL-Code:
Grüße vom marabu
SELECT DISTINCT Nummer FROM TabA WHERE Nummer NOT IN (SELECT Nummer FROM TabB)
|
Re: SQL-Befehl vergleichen zweier Tabellen
hi,
ich glaube mit "IN" müßte da was laufen. Ich arbeite nicht so oft mit SQL, somit Nachsicht im Voraus. Meine Abfrage würde so aussehen: select distinct a.Nummer from TabA a, TabB b where not (a.Nummer in b.Nummer) gruß oki |
Re: SQL-Befehl vergleichen zweier Tabellen
Hi,
SQL-Code:
Ist aus dem Kopf, sollte aber gehen.
select * from taba where not exists (select * from tabb
where tabb.nummer = taba.nummer) Cu, Frank |
Re: SQL-Befehl vergleichen zweier Tabellen
Ja so funktioniert es.
Danke... |
Re: SQL-Befehl vergleichen zweier Tabellen
Iiiiiiiihhhh Subselects. Schon mal mit 1 Mio. Datensätze probiert? Könnte passieren das es ewig dauert ...
Probier lieber einen OUTER JOIN
SQL-Code:
Solle (wenn die Syntax aus dem Kopf) für Firefox OK ist.
SELECT TabA.Nummer, TabB.Nummer FROM TabA LEFT OUTER JOIN TabB ON TabA.Nummer = TabB.Nummer WHERE TabB.Nummer is NULL
|
Re: SQL-Befehl vergleichen zweier Tabellen
Zitat:
bring Peter bitte nicht auf eine falsche Fährte. Exists ist IMHO die schnellste Methode, gerade wenn TabB mehrere Datensätze mit der gleichen Nummer haben kann. Frank |
Re: SQL-Befehl vergleichen zweier Tabellen
Exists ist schnell, aber Subqueries könnnen zum Performancegrab werden wenn für jeden Datensatz in TabA eine komplette Ergebnissmenge für TabB bestimmt wird.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz