AGB  ·  Datenschutz  ·  Impressum  







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

Baumansicht

Ein Thema von theomega · begonnen am 4. Aug 2003 · letzter Beitrag vom 7. Aug 2003
 
frankg

Registriert seit: 20. Mai 2003
Ort: Wetter
72 Beiträge
 
Delphi 7 Architect
 
#8

Re: Baumansicht

  Alt 6. Aug 2003, 17:52
Zitat von theomega:
Gut, die Sache funktioniert ganz gut, nur eine Sache stört mich noch: Bis jetzt werden ja Ordner ausgeblendet, wenn für sie nicht mindestens ein Eintrag in allen 4 Tabellen existiert. Wie bekomme ich es hin, das selbst wenn jetzt kein Konto-eintrag für eine Funktion existiert, trotzdem die Funktion zurückgegeben wird, dann ohne einen Eintrag für das Konto.
Hallo TheOmega!

Um Datensätze anzeigen zu lassen, die keinen Foreign Key Wert besitzen (d.h. bei denen dieser Wert NULL ist) muss man nun einen Outer Join verwenden. Der Outer Join nimmt alle Datensätze einer der beiden Tabellen (oder beider) Tabellen mit in die Ergebnisdatenmenge auf. Damit angegeben werden kann, welche Datensätze auch ohne FK in die Ergebnisdatenmenge sollen, wird eine Tabelle als linke und eine als rechte Tabelle bezeichnet (hängt von der Poisition der Tabelle in Bezug auf das Gleichheitszeichen innerhalb der Where-Klausel ab. Ein Right-Outer Join nimmt alle Datensätze, bei denen der FK Null ist der rechten Tabelle mit, ein Left-Outer Join nimmt alle Datensätze der linken Tabelle mit.
Unglücklicherweise unterscheidet sich hier die Syntax der einzelnen SQL-Dialekte (soweit zum Standard SQL). Codetechnisch sieht das ganze dann unter Oracle folgendermassen aus:

SQL-Code:
SELECT
  *
FROM
  SACHBUCH SB,
  GLIEDERUNG GL,
  FUNKTION FK,
  KONTO KO
WHERE
  (SB.SACHBUCH_ID = GL.SACHBUCH_ID) AND
  (GL.GLIEDERUNG_ID = FK.GLIEDERUNG_ID) AND
  (FK.FUNKTION_ID = KO.FUNKTION_ID (+));
In diesem Beispiel haben wir einen right Inner Join zwischen FK.FUNKTION_ID und KO.FUNKTION_ID definiert, d.h. es werden auch die Datensätze aus der Tabelle KONTO in die Ergebnisdatenmenge aufgenommen, die keinen Wert im Feld FUNKTION_ID besitzen.

Leider weiss ich nicht, wie genau man das unter Firebird syntaktisch formuliert. Ich tippe auf irgendwas wie:

  FK.FUNKTION RIGHT INNER JOIN KO.FUNKTION_ID Viele Grüsse

Frank
  Mit Zitat antworten Zitat
 


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 16:12 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