AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu SQL-Statement

Ein Thema von glkgereon · begonnen am 14. Apr 2005 · letzter Beitrag vom 15. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:05
Datenbank: Access • Zugriff über: ADO
hi

ich hab en db in dieser form: id, ParentID, Value
daraus erstelle ich so "Bäume"
nun möchte ich alle einträge löschen, wo es die Zahl, die in ParentID drinsteht nicht mehr in der id spalte gibt.

geht das so?
DELETE FROM all WHERE (SELECT Count(ID) FROM all WHERE ID = ParentID) = 0 und nochwas:

wenn ich zb 5 gleiche (vom design her) tabellen hab, wie kann ich die zusammenführen?
so?
INSERT INTO all VALUES (SELECT * FROM tbl1, tbl2, tbl3, tbl4) mfg gereon
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:22
Zitat von glkgereon:
hi

ich hab en db in dieser form: id, ParentID, Value
daraus erstelle ich so "Bäume"
nun möchte ich alle einträge löschen, wo es die Zahl, die in ParentID drinsteht nicht mehr in der id spalte gibt.

geht das so?
DELETE FROM all WHERE (SELECT Count(ID) FROM all WHERE ID = ParentID) = 0 und nochwas:

wenn ich zb 5 gleiche (vom design her) tabellen hab, wie kann ich die zusammenführen?
so?
INSERT INTO all VALUES (SELECT * FROM tbl1, tbl2, tbl3, tbl4) mfg gereon
zu 1.: nein. Welche ParentID meinst Du denn? Doch sicher eine bestimmte, oder? Vielleicht meinst du das:

DELETE FROM all WHERE ID = :ParentID Aber wie gesagt: Ich bin nicht sicher was Du meinst. :ParentID ist hier ein Parameter, den du noch setzen musst. Allerdings würdest du auf diese Weise nur einen Datensatz löschen, nämlich den Parent des Datensatze, von dem die ParentID stammt. Willst Du das?

zu 2.
je nach datenbank - in Access geht das mit UNION:

SELECT * FROM tbl1 UNION SELECT * FROM tbl2 UNION SELECT * FROM tbl3 ...
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:33
also, das 2te sieht gut aus, thx

zum ersten:

ich hab ne baumstruktur, zb:

Delphi-Quellcode:
   0:1
  / \
1:2 1:3
 | / \
2:4 3:5 3:6
das ist immer parentid:id

nun fällt zb. 1:3 weg (wird gelöscht), und ich will alle unterpunkte löschen.

am besten direkt auch so, das auch unterpunkte von 3: bzw 3:6 gelöscht werden...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:40
Setz einfach einen Fremdschlüssel auf ParentId, der auf ID verweißt und schalt cascade delete ein.
Dann werden alle Sätze gelöscht, die auf die von dir gelöschte Referenz verweisen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:44
moment mal, was bitte?

hört sich gut an, könntest du das event mal kleinschrittig erklären? bin noch net so routiniert im umgang mit db's
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:52
Geh mal in dein Access und lass dir die Beziehungen anzeigen (unter Extras).
Dann fügst du dort 2 mal deine Tabelle ein und ziehst von der einen das Feld ParentID auf ID der anderen (selben) Tabelle.
Dann markierst du den Haken "Mit referenzieller Integrität" und "Löschweitergabe an Detailsatz".
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:54
ja nee, dann löscht er ja die einträge in tbl1 wenn die id in tbl2 flöten geht, wenn ich das richtig verstanden hab, das soll aber in der selben tabelle sein.
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 09:58
Ich schrieb
Dann fügst du dort 2 mal deine Tabelle ein und ziehst von der einen das Feld ParentID auf ID der anderen (selben) Tabelle.

Also, ein Verweis auf sich selber!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 10:08
ok, ich werds zu hause mal probieren.
wenn ichs net hinkriege meld ich mich nochmal...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: Frage zu SQL-Statement

  Alt 14. Apr 2005, 19:34
ich kapier das net

kannst du mir event mal ein beispiel schicken?
»Unlösbare Probleme sind in der Regel schwierig...«
  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 21:50 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