![]() |
[SQL] Outer Join
Hi,
ich habe Folgendes vor: Ich möchte alle Zeilen in Tabelle A selektieren, deren ID nicht in Tabelle B vorkommen, ein "Verbinden" der Tabellen ist nicht nötig Dennoch dachte ich mir, dass FULL OUTER JOIN dafür wie geschaffen wäre, aber nachdem ich ![]() Was bleibt mir denn jetzt noch übrig? :? |
Re: [SQL] Outer Join
In einem Outer join sind alle vorhanden ( left, right, full)
Nur die ohne bekommst du besser über einen Subselect |
Re: [SQL] Outer Join
SQL-Code:
liefert alle Datensätze aus Tabelle1, deren PK nicht in der Spalte 'FK' der Tabelle2 enthalten ist.
select a.*
from tabelle1 a left join tabelle2 b on a.PK = b.FK where b.FK is null |
Re: [SQL] Outer Join
Danke euch beiden. Auf die Idee mit dem Subselect bin ich nicht gekommen. :wall:
Welche von beiden Varianten ist jetzt die effizientere oder nehmen sie sich nicht viel? |
Re: [SQL] Outer Join
Das kommt auf das DBMS an.
|
Re: [SQL] Outer Join
Das DBMS dürfte MySQL sein, wenn ich die Begriffe nicht verwechsel, oder meinst du die Engine à la InnoDB oder MyISAM?
|
Re: [SQL] Outer Join
Ohne die Interna von MySQL zu kennen, sollte es keinen großen Unterschied geben, da der Optimierer die Subquery wohl zunächst in einen Join auflösen wird. Sonst hilft nur ausprobieren, wobei du das immer noch machen kannst, wenn sich herausstellt, dass dein Programm zu langsam ist.
|
Re: [SQL] Outer Join
So und jetzt nochmal, wie man das normalerweise lösen würde...
SQL-Code:
SELECT *
FROM tabelle1 a WHERE NOT EXISTS (SELECT * FROM tabelle2 WHERE FK = a.PK) |
Re: [SQL] Outer Join
Zitat:
|
Re: [SQL] Outer Join
Das mag ja sein, es ist aber trotzdem ein Hack und somit nur gefrickel. Ich setzt es auch manchmal ein, aber es geht nunmal nichts über kommulierte Unterabfragen (in diesem benötigten Bereich).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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