Zum Inhalt springen

Unvereinbar?: Left Join und Delete


Pointerman

Empfohlene Beiträge

Hallo Leute.

Ich habe mir einen netten Left Join zusammengebaut, der mir Datensätze ausgibt, die die referenzielle Integrität verletzen (Schlampiges DB-Design). Als ich die Datensätze endlich angezeigt bekommen habe hab' ich mich erstmal tierisch gefreut. Bis mir dann aufgefallen ist, daß ich die Datensätze auch löschen muss.

Hat irgendjemand eine einfache Idee, wie ich die Datensätze jetzt löschen kann?

Ich stehe irgendwie auf dem Schlauch!:(

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Goos

Nee, anscheinend leider nicht. Theoretisch wäre das ja so wie DerMatze das erklärt hat ja möglich, so funktioniert es aber nur wenn man einen einfach Primärschlüssel hat. Wenn der nämlich zusammengesetzt ist, dann kann ich ja nicht noch einfach ein AND dranhängen und hoffen, daß es funzt, weil "das Zusammengesetzte" beim PK dann ja Fehlen würde.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Falls du nen MSSQL Server hast sollte auch sowas funktionieren:

DELETE RwgWerte FROM
RwgWerte LEFT JOIN Rohstier
ON (rwgwerte.Tierart = Rohstier.TierartNummer)
AND (rwgwerte.Rohstoff = Rohstier.RohstoffNummer)
WHERE (rohstier.Tierartnummer is Null)[/PHP]

ob das allerdings auch auf anderen Systemen klappt weiss ich nicht :)

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

kann man in paradox mittels sql strings verketten? dann string dir einen eindeutigen identifizierer aus den einzelfeldern des pk zusammen und benutze den als "einspaltigen pk".

oder existiert der exists-operator?

dann:

delete from rwgwerte where exists 

(select 1 from rohstier 

where rohstier.tierartnummer = rwgwerte.tierartnummer 

and rohstier.rohstoffnummer = rwgwerte.rohstoffnummer)

hth...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Pointerman

Nee, des funzt net! Ich greife über die BDE auf eine Paradox-DB zu. Aber funktioniert das echt so auf einem SQL-Server? Ich meine beim DELETE wird ja nicht mal die normale SQL-Syntax eingehalten!?

Habs gerade sogar mal kurz probiert....mit dem Ergebnis: ja der SQL-Server macht das.

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Alle

Ich habe es aufgegeben das Problem mit einem einzigen SQL-Statement zu lösen. Weil ich in Delphi gearbeitet habe, hab ich das Problem gelöst indem ich einfach die "kaputten" Datensätze selectiert habe und diese dann mit einer Zweiten Abfrage aus der Tabelle gelöscht habe.

Trotzdem allen herzlichen Dank für die Mühen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...