Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten in Untertabelle löschen (https://www.delphipraxis.net/184256-daten-untertabelle-loeschen.html)

Walter Landwehr 12. Mär 2015 13:16

Datenbank: Firebird • Version: 2.5.3 • Zugriff über: IBO

Daten in Untertabelle löschen
 
Hallo,

ich möchte Daten aus einer Untertabelle Datensätze löschen wozu es im der Haupttabelle keinen Eintrag mehr gibt.

Hat jemand einen passenden SQL Befehl.

baumina 12. Mär 2015 13:18

AW: Daten in Untertabelle löschen
 
ungefähr so:

delete from where not exists (select ....)

DeddyH 12. Mär 2015 13:21

AW: Daten in Untertabelle löschen
 
Sind das denn keinen "richtigen" Fremdschlüssel in der Detailtabelle? Normalerweise ist das nicht so einfach möglich, es sei denn, die Löschregel heißt "SET NULL", dann muss man nur die löschen, wo der Fremdschlüssel NULL ist.

Walter Landwehr 12. Mär 2015 13:26

AW: Daten in Untertabelle löschen
 
Also das sind 2 Tabellen wo es in der Untertabelle keinen Fremd Schlüssel zu gibt, diesen will ich jetzt einfügen. Dabei habe ich festgestellt das es Daten in der Untertabelle gibt aber keinen Datensatz in der Haupttabelle. Die sind Müll und müssen weg.

DeddyH 12. Mär 2015 13:29

AW: Daten in Untertabelle löschen
 
Versuch es mal so:
SQL-Code:
DELETE FROM
  Detailtabelle
WHERE FK-Feld NOT IN (
  SELECT
    PK-Feld
  FROM
    Haupttabelle
)

Walter Landwehr 12. Mär 2015 13:40

AW: Daten in Untertabelle löschen
 
Danke DeddyH hat bestens geklappt. Spart mir viel Arbeit. :hello:

Perlsau 12. Mär 2015 13:50

AW: Daten in Untertabelle löschen
 
Anzumerken wäre noch, daß man entweder die Tabellen oder die DB-Anwendung so gestaltet, daß beim Löschen von Records in der Haupttabelle automatisch die zugehörigen Records der Sub-Tabelle gelöscht werden.

mkinzler 12. Mär 2015 13:59

AW: Daten in Untertabelle löschen
 
Oder das Löschen nur/erst erlaubt wenn keine Detaildatensätze mehr existieren.

mm1256 12. Mär 2015 15:08

AW: Daten in Untertabelle löschen
 
Oder sowas Abartiges wie RI benutzt

jobo 12. Mär 2015 15:27

AW: Daten in Untertabelle löschen
 
Zitat:

Zitat von mm1256 (Beitrag 1293232)
Oder sowas Abartiges wie RI benutzt

Was ja mkinzler einen Eintrag höher vorgeschlagen hat, wenn auch ironiefrei.

DeddyH 12. Mär 2015 15:34

AW: Daten in Untertabelle löschen
 
Tja, darauf hatte ich mich auch bezogen.

mm1256 12. Mär 2015 15:38

AW: Daten in Untertabelle löschen
 
YEIN - ich dachte ihr meint etwas anderes, denn etwas erlauben oder etwas von der DB automatisch erledigen lassen ist nicht das Selbe. Wie dem auch sei, ironisch hab ich das jedenfalls nicht gemeint. Sorry, wenn das so rüber gekommen ist.

DeddyH 12. Mär 2015 15:41

AW: Daten in Untertabelle löschen
 
Nee, wir meinten schon alle dasselbe (was ich mit "richtigen" Fremdschlüsseln umschrieben habe, also RI).

jobo 12. Mär 2015 15:55

AW: Daten in Untertabelle löschen
 
[KeineIronie]Na gut, dass diese wichtige Technik so häufig genannt wurde!
[/KeineIronie]

Zitat:

Zitat von mm1256 (Beitrag 1293239)
..Wie dem auch sei, ironisch hab ich das jedenfalls nicht gemeint.

Also wenn "..Abartiges.." keine Ironie war, dann muss ich doch noch mal nachhaken..
Referentielle Integrität ist toll und einer der wichtigen Gründe, eine Datenbanksoftware einzusetzen, die das bietet.

p80286 12. Mär 2015 15:57

AW: Daten in Untertabelle löschen
 
!Friede!

Jetzt prügelt Euch doch nicht, nur weil irgendein Datenbankkaiser wieder mal seine neuen Klamotten ausgeführt hat.

Gruß
K-H

@Jobo
Zitat:

Referentielle Integrität ist toll und einer der wichtigen Gründe, eine Datenbanksoftware einzusetzen, die das bietet.
ich dachte das findet im Kopf des Programmierers statt, gib'ts da schon so etwas wie
Code:
RI=on

DeddyH 12. Mär 2015 15:58

AW: Daten in Untertabelle löschen
 
Wir haben uns doch alle lieb :kiss:

mkinzler 12. Mär 2015 16:04

AW: Daten in Untertabelle löschen
 
Zitat:

Zitat von DeddyH (Beitrag 1293244)
Wir haben uns doch alle lieb :kiss:

Dann dürft wir u.U. auch am Linux-Kernel basteln

http://www.heise.de/open/meldung/Lin...r-2571906.html

jobo 12. Mär 2015 16:34

AW: Daten in Untertabelle löschen
 
Hach und wie wir uns lieb haben!

"Seid großartig zueinander" (oder: "So kannst Du mit uns doch nicht umgehen")
Als ich das las, dachte ich, da haben sich aber alle zusammengetan gegen den Chef und siehe da, der meint angeblich:
"mal schaun wie das funktioniert"

@p80286
Mehrheitlich findet es offenbar vor allem und ausschließlich im Kopf des Programmierers statt. Gute Gedanken und Vorsätze sind aber leider in der Realität wirkungslos.
Dabei ist die echte Syntax für RI=on nur unwesentlich aufwändiger und funktioniert.
:)

mkinzler 12. Mär 2015 16:37

AW: Daten in Untertabelle löschen
 
Ich würde auch nicht auf die Möglichkeiten, welches ein modernes DBMS in diese Richtung bietet, verzichten wollen.
Es gibt aber andere die Berechnen, wieviel Zeit sie dafür verplempern

DeddyH 12. Mär 2015 16:41

AW: Daten in Untertabelle löschen
 
Ich kenne auch div. Software-Pakete, die gänzlich auf RI verzichten. Das kann gut gehen, muss es aber nicht.

mkinzler 12. Mär 2015 16:43

AW: Daten in Untertabelle löschen
 
Manchmal hat man ja sehr Glück.

jobo 12. Mär 2015 16:51

AW: Daten in Untertabelle löschen
 
[OT]
(zugegeben, ist jetzt auch irgendwie zu spät)

Zitat:

Zitat von mkinzler (Beitrag 1293256)
Es gibt aber andere die Berechnen, wieviel Zeit sie dafür verplempern

Versteh ich nicht. Wie das?
Ich verplemper die Zeit im DB Bereich allenfalls damit, die Lizenzbestimmung, Optionsmöglichkeiten und Hardwarelimits und resultierende Kosten für bestimmte Oracle DB Versionen zu verstehen (oder sonstige Verwaltungsorgien mit denen)
Oder meinst Du die nosql Fraktion?
[/OT]

@RI=off: Hab ich in "großem Stil" mal bei einer TKAnlagen Software gesehen. Schätze das ist eher Obfuscation, vielleicht auch bissl Performance. Solange es eine einheitliche (vlt sogar zentrale) "Schreibtechnologie" gibt, stehen m.E. die Chancen für die Integrität ganz gut.

mkinzler 12. Mär 2015 19:59

AW: Daten in Untertabelle löschen
 
Ich bezieh mich hier auf einen anderen Beitrag, in dem fehlende RI mit dem Zeitbedarf/Kosten für deren Anlage unf Pflege begründet wurde. Ich würde, wie schon erwähnt nicht darauf verzichten.

jobo 12. Mär 2015 21:10

AW: Daten in Untertabelle löschen
 
Ach so, ich erinnere mich glaub ich sogar dunkel daran.
Vermutlich arbeiten hier viele an Systemen, die klassisch C/S sind und wo nur ein (Delphi)Programm gegen den Server arbeitet. Da kann man das vielleicht noch am ehesten vertreten. Trotzdem scheint es mir irgendwie verschenkt.

p80286 12. Mär 2015 22:18

AW: Daten in Untertabelle löschen
 
Ich durfte mal ein System betreuen mit RI=off, als die Daten auf ein neues System umziehen mußten, tauchten dann Datenfragmente auf, die es schon gar nicht mehr geben durfte. Soviel Performance oder was auch immer konnte nicht eingespart werden, wie wir hinterher für den Datencheck investieren mußten.
Wahrscheinlich könnt Ihr euch denken wie ich zu Softwarehäusern stehe, die hier clever agieren.

Gruß
K-H

P.S.
natürlich sind Datenänderungen durch die Hintertür damit nicht mehr ganz einfach, aber das nehme ich dann gerne in Kauf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 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