AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Nochmals ein Delete From Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Nochmals ein Delete From Problem

Ein Thema von Jelly · begonnen am 16. Okt 2004 · letzter Beitrag vom 18. Okt 2004
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Nochmals ein Delete From Problem

  Alt 16. Okt 2004, 17:22
Ich hatte kürzlich in diesem Thread ein Löschproblem, und kriegte auch prompt dafür eine Lösung geboten.

Jetzt hab ich ein noch anderes Problem, was ich hier mal schildern will:

Man nehme eine Tabelle Projekte, eine Tabelle Kunden. Inhalt von beiden ist selbsterklärend.

Dann gibts noch eine Tabelle KundenProjekte, welche eine Zwischentabelle darstellt, weil ich unter Kunden und Projekte eine n:n Beziehung habe, also ein Kunde kann mehrere Projekte besitzen, sowie ein Projekt von mehreren Kunden gekauft werden kann.

Soweit klar?

jetzt möchte ich ein Projekt X aus der Datenbank löschen. Das Löschen in KundenProjekte ist sehr simpel. Aber anschliessend kann es passieren, daß es Einträge in der Tabelle Kunden gibt, die jedoch in keiner Beziehung zu irgendeinem Projekt stehen. Diese Kundenleichen rauszufinden ist auch noch einfach, über folgende Abfrage:
SQL-Code:
select count(kp.ID) as Anzahl, k.Name, k.Vorname
FROM rm_kunden k left join rm_kundenprojects kp on kp.Kunde = k.ID
group by k.Name, k.Vorname
having count(kp.ID) = 0
Ergibt mir eine Liste der Kunden, die jetzt keine Projekte mehr besitzen.

Und genau diese Einträge will ich löschen, nur krieg ich das mal wieder nicht in eine
delete from rm_kunden ... Anweisung umgesetzt.

Aber dazu noch gleich eine allgemeine Frage zu solchen Problemen: Ist es überhaupt angebracht, diese Daten zu löschen? Oder belass ich vielleicht doch lieber die Kundenleichen in der Datenbank? Was meint ihr?

Alles nicht so einfach
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Nochmals ein Delete From Problem

  Alt 16. Okt 2004, 17:35
Jedes richtige DBMS würd das...
SQL-Code:
DELETE
FROM rm_kunden del
WHERE del.ID not in (SELECT sQ.Kunde
                      FROM rm_kundenprojects sQ)
... können.
MySQL ist dafür wahrscheinlich wieder zu doof.

Zitat von Jelly:
Aber dazu noch gleich eine allgemeine Frage zu solchen Problemen: Ist es überhaupt angebracht, diese Daten zu löschen? Oder belass ich vielleicht doch lieber die Kundenleichen in der Datenbank? Was meint ihr?
Ich würde sie drin lassen. (Als Optimist denke ich: Die kommen wieder. ) Da du aber ständig über SubQueries stolpern wirst, würde es in mySQL zur Folter werden.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Nochmals ein Delete From Problem

  Alt 16. Okt 2004, 17:42
Zitat von Robert_G:
Jedes richtige DBMS würd das...
SQL-Code:
DELETE
FROM rm_kunden del
WHERE del.ID not in (SELECT sQ.Kunde
                      FROM rm_kundenprojects sQ)
... können.
MySQL ist dafür wahrscheinlich wieder zu doof.
Ich weiss ich weiss Versteh ja auch nicht wie MySQL überhaupt so populär werden konnte... Keine Subselects, keine Views, keine Stored Procedures, keine Trigger, kein "Cascade Delete". Da kriegst de echt en Rappel

Aber trotzdem muss ich irgendeine Lösung finden... Aber vielleicht hast du Recht, und ich lass die Kunden einfach in der Tabelle drin stehen.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Nochmals ein Delete From Problem

  Alt 16. Okt 2004, 18:03
Wenn ich die Syntax eines mySQL DELLETEs laut diesem Beitrag richtig deduziere, könnte das so aussehen:
Einfach Copy'nPaste deines SELECTs + ein bissl DELETE , ich habe nicht viel Ahnung von mySQL. (rate mal warum. )
SQL-Code:
DELETE k.*
FROM rm_kunden k left join rm_kundenprojects kp on kp.Kunde = k.ID
GROUP BY k.Name, k.Vorname
HAVING Count(kp.ID) = 0
Sowas würde ich persönlich niemals verwenden können. (Mir rollen sich da schon beim Lesen die Fussnägel auf. )
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Nochmals ein Delete From Problem

  Alt 16. Okt 2004, 18:20
Zitat von Robert_G:
(Mir rollen sich da schon beim Lesen die Fussnägel auf. )
Nicht nur dir, sondern auch dem MySQL Server
Das hatt ich auch schon versucht, gibt mir aber eine Fehlermeldung zurück.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

Re: Nochmals ein Delete From Problem

  Alt 18. Okt 2004, 08:15
Hehe, irgendwie seid ihr mit der MySQL-Syntax auf Kriegsfuß, was?
DELETE kunden.* FROM kunden LEFT OUTER JOIN kundenprojekte ON kunden.kunde_id = kundenprojekte.kunde_id WHERE kundenprojekte.kunde_id IS NULL
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


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