![]() |
Nochmals ein Delete From Problem
Ich hatte kürzlich
![]() 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:
Ergibt mir eine Liste der Kunden, die jetzt keine Projekte mehr besitzen.
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 Und genau diese Einträge will ich löschen, nur krieg ich das mal wieder nicht in eine
SQL-Code:
Anweisung umgesetzt.
delete from rm_kunden ...
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 :roll: |
Re: Nochmals ein Delete From Problem
Jedes richtige DBMS würd das...
SQL-Code:
... können.
DELETE
FROM rm_kunden del WHERE del.ID not in (SELECT sQ.Kunde FROM rm_kundenprojects sQ) MySQL ist dafür wahrscheinlich wieder zu doof. :roll: Zitat:
|
Re: Nochmals ein Delete From Problem
Zitat:
Aber trotzdem muss ich irgendeine Lösung finden... Aber vielleicht hast du Recht, und ich lass die Kunden einfach in der Tabelle drin stehen. |
Re: Nochmals ein Delete From Problem
Wenn ich die Syntax eines mySQL DELLETEs laut
![]() Einfach Copy'nPaste deines SELECTs + ein bissl DELETE :stupid: , ich habe nicht viel Ahnung von mySQL. (rate mal warum. :P )
SQL-Code:
Sowas würde ich persönlich niemals verwenden können. (Mir rollen sich da schon beim Lesen die Fussnägel auf. :roll: )
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 |
Re: Nochmals ein Delete From Problem
Zitat:
Das hatt ich auch schon versucht, gibt mir aber eine Fehlermeldung zurück. |
Re: Nochmals ein Delete From Problem
Hehe, irgendwie seid ihr mit der MySQL-Syntax auf Kriegsfuß, was? :wink:
SQL-Code:
DELETE kunden.* FROM kunden LEFT OUTER JOIN kundenprojekte ON kunden.kunde_id = kundenprojekte.kunde_id WHERE kundenprojekte.kunde_id IS NULL
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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