AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Outer Join

Ein Thema von Synollus · begonnen am 26. Dez 2009 · letzter Beitrag vom 28. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#1

[SQL] Outer Join

  Alt 26. Dez 2009, 17:44
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 diesen Artikel gelesen habe, bin ich total verwirrt (vielleicht habe ich es auch nur falsch verstanden).

Was bleibt mir denn jetzt noch übrig?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [SQL] Outer Join

  Alt 26. Dez 2009, 17:54
In einem Outer join sind alle vorhanden ( left, right, full)
Nur die ohne bekommst du besser über einen Subselect
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: [SQL] Outer Join

  Alt 26. Dez 2009, 19:40
SQL-Code:
select a.*
  from tabelle1 a left join
       tabelle2 b on a.PK = b.FK
 where b.FK is null
liefert alle Datensätze aus Tabelle1, deren PK nicht in der Spalte 'FK' der Tabelle2 enthalten ist.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#4

Re: [SQL] Outer Join

  Alt 27. Dez 2009, 10:13
Danke euch beiden. Auf die Idee mit dem Subselect bin ich nicht gekommen.

Welche von beiden Varianten ist jetzt die effizientere oder nehmen sie sich nicht viel?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [SQL] Outer Join

  Alt 27. Dez 2009, 10:15
Das kommt auf das DBMS an.
Markus Kinzler
  Mit Zitat antworten Zitat
Synollus

Registriert seit: 29. Dez 2008
49 Beiträge
 
#6

Re: [SQL] Outer Join

  Alt 27. Dez 2009, 17:17
Das DBMS dürfte MySQL sein, wenn ich die Begriffe nicht verwechsel, oder meinst du die Engine à la InnoDB oder MyISAM?
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#7

Re: [SQL] Outer Join

  Alt 27. Dez 2009, 17:29
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.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: [SQL] Outer Join

  Alt 27. Dez 2009, 19:39
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)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: [SQL] Outer Join

  Alt 27. Dez 2009, 22:37
Zitat von omata:
So und jetzt nochmal, wie man das normalerweise lösen würde...
Äh... nö? Die Lösung mit einem LEFT JOIN ist doch mindestens gleichwertig (siehe u.a. "Inside SQL-Server xxxxx", Soukup und Delaney).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: [SQL] Outer Join

  Alt 28. Dez 2009, 00:34
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).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz