AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken wie setze ich "connect by" richtig ein
Thema durchsuchen
Ansicht
Themen-Optionen

wie setze ich "connect by" richtig ein

Ein Thema von p80286 · begonnen am 8. Apr 2011 · letzter Beitrag vom 7. Jun 2011
 
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: wie setze ich "connect by" richtig ein

  Alt 7. Jun 2011, 12:54
ich habs mir ausgwürfelt:
(die Tabelle Name enthält Namen, NameIndividual Vornamen,Geschlecht... , NameSuccessor die Beziehung zwischen Erblasser [NameKey] und Erbe [SuccessorKey], sowie den Erbanteil [Rate]
)
Code:
select Erbl.Name "Erblasser",ErblI.Firstname "ErblasserVorn"
      ,Erbe.Name "Erbe"    ,ErbeI.Firstname "ErbeVorn"
      ,Namesuccessor.*,level
from NameSuccessor
    ,Name Erbl,Nameindividual ErblI
    ,Name Erbe,Nameindividual ErbeI
where Erbl.Namekey=Namesuccessor.Namekey
  and Erbe.Namekey=NameSuccessor.SuccessorNameKey
  and ErbeI.NameKey=Erbe.NameKey
  and ErblI.NameKey=Erbl.NameKey
--  start with NameSuccessor.Namekey=123456
  connect by Namesuccessor.Namekey=prior Namesuccessor.Successornamekey
Mit Dieser Abfrage bekomme ich alle Erbschaftsverhältnisse angezeigt, und es ist Nachvollziebar wer von wem, wieviel (NameSuccessor.Rate)geerbt hat.
Soll die Ausgabe sich nur auf einen Erblasser beziehen so wird
Code:
start with NameSuccessor.Namekey=123456
eingeschoben.

Wird eine Liste oder ein EndErbe benötigt,erhält man die Daten hierüber:
Code:
select distinct Erbe.Name "Erbe",ErbeI.Firstname "ErbeVorn"
from NameSuccessor
    ,Name Erbl,Nameindividual Erbli
    ,Name Erbe,Nameindividual Erbei
where Erbl.Namekey=Namesuccessor.Namekey
  and Erbe.Namekey=Namesuccessor.SuccessorNameKey
  and ErbeI.NameKey=Erbe.NameKey
  and ErblI.NameKey=Erbl.NameKey
  and not exists(select * from namesuccessor a where a.NameKey=Namesuccessor.Successornamekey)
--  start with NameSuccessor.Namekey=123456
  connect by Namesuccessor.namekey=prior Namesuccessor.Successornamekey
Wobei Erbl hier eigentlich überflüssig ist. Über not exists() werden alle Datensätze aus der Ausgabe verbannt, in denen Erben auch Erblasser sind. Es bleiben also nur Erben übrig.
Wird nur der oder die Enderben zu einem Erblasser gesucht kann auf das distinct verzichtet werden, da eine eindeutige Beziehung vorliegt.
Erst wenn ein Erbe der Endpunkt einer "Erbenkette" ist, wird die Unterdrückung von Mehrfachnennungen durch distinct notwendig.

Vielleicht hilft's dem einen oder anderen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 06:54 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