Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Ist das in einer SQL Query möglich

Mitglied: Closed

Closed (Level 1) - Jetzt verbinden

22.08.2008, aktualisiert 27.08.2008, 4127 Aufrufe, 10 Kommentare

hallo,

ich habe ien datenbankstruktur, die in etwa folgende tabellen enthält: projekte, kunden, kommentare, notizen ,etc.

jetzt ist es so, dass in der tabelle projekte natürlich eine kundeid vorhanden ist, um diese zu verbinden. des weiteren ist in der tabelle kommentare natürlich auch eine zuordnung zu der tabelle notizen (unter anderem) und projekte.

jetzt möchte ich folgendes machen: wenn ein user einen kunden löscht, sollen alle projekte, die dem kunden zugeordnet wurden gelöscht werden und alle kommentare, notizen und sonstige elemente.

wie gehe ich am besten an dieses problem heran?

hoffe ich habe es einigermaßen gut beschrieben

danke schonmal
Mitglied: SnowStar
22.08.2008 um 08:47 Uhr
01.
SELECT a.*, b.* FROM kunden a, projekte b WHERE (a.idkunde = kundenid) AND (b.idkunde = a.idkunde);
Sollte dir alle Spalten von a (also Tabelle kunden) und b (also Tabelle projekte) zurückgeben, die zum Kunden kundenid gehören.

Entsprechend müsste das Query fürs DELETE lauten:
01.
DELETE a.*, b.* FROM kunden a, projekte b WHERE (a.idkunde = kundenid) AND (b.idkunde = a.idkunde);
Wobei natürlich die kundenid noch gesetzt werden muss

Ist übrigens auf MySQL bezogen, ich weiss nicht, inwiefern das auch auf MSSQL anwendbar ist!
Bitte warten ..
Mitglied: AndreasHoster
22.08.2008 um 09:01 Uhr
Wenn Dein Datenbanksystem es unterstützt, würde ich die Tabellen gleich mit referentieller Integrität und Löschweitergabe definieren, dann kümmert sich der Server selbsttätig drum, daß in den Projekt, Notiz, Sonstwas Tabellen nur Datensätze drin sind, die zu Kunden aus der Kundentabelle gehören.

Beispiel bei einem MS SQL 2000:
01.
ALTER TABLE [dbo].[Test1] ADD  
02.
	CONSTRAINT [FK_Test1_Test] FOREIGN KEY  
03.
04.
		[ID] 
05.
	) REFERENCES [dbo].[Test] ( 
06.
		[ID] 
07.
	) ON DELETE CASCADE 
Legt fest, daß es in Test1.ID nur Werte geben darf die in Test.ID auch drin sind (Foreign Key) und das die Zeilen in Test1 gelöscht werden, falls der Key in Test gelöscht wird (On Delete Cascade)
Bitte warten ..
Mitglied: Closed
22.08.2008 um 10:19 Uhr
sorry hatte vergessen zu erwähnen, dass es sich um eine mysql db handelt. werde das von snowstar dargelegte beispiel mal testen, da ich mirnicht sicher bin ob das beispiel von andreas auf einer mysql db klappt.

aber vielen dank schonmal. melde mich wenns funktioniert hat
Bitte warten ..
Mitglied: Closed
22.08.2008 um 12:06 Uhr
hätte jetzt folgenden string:

DELETE FROM tblmeeting, tblkommentar WHERE (tblkommentar.meetingID=tblmeeting.id) AND tblmeeting.id=6;

da bekomme ich eine fehlermeldung, dass die syntax falsch sei. müsste aber eigentlich genauso sein, wie du geschrieben hast, stefan, oder?

danke schonmal
Bitte warten ..
Mitglied: SnowStar
22.08.2008 um 12:38 Uhr
01.
DELETE a.*, b.* FROM tblmeeting a, tblkommentar b WHERE (a.id = 6) AND (b.meetingID = a.id);
Du musst den Tabellen quasi "neue" Namen zuweisen (im Beispiel a und b) und die entsprechenden Felder dann mit a. und b. benennen!

Kurzum sagt das Query:
01.
DELETE a.*, b.* FROM 
02.
// LÖSCHE VON a und b ALLES (.*) 
03.
 tblmeeting a, tblkommentar b 
04.
// a IST DIE TABELLE tblmeeting, b IST DIE TABELLE tblkommentar  
05.
WHERE (a.id = 6) AND (b.meetingID = a.id); 
06.
// WO a.id = 6 UND b.meetingID = a.id ...
Bitte warten ..
Mitglied: Closed
22.08.2008 um 16:24 Uhr
super das funktioniert einwandfrei. denke dass dieses verfahren auch auf mehr als zwei tabellen übertragbar ist.


vielen dank
Bitte warten ..
Mitglied: SnowStar
22.08.2008 um 18:44 Uhr
01.
DELETE a.*, b.*, c.* FROM tblmeeting a, tblkommentar b, nocheinetabelle c WHERE (a.id = 6) AND (b.meetingID = a.id) AND (c.sonstwas = a.id);
Hoffe ich
Bitte warten ..
Mitglied: Closed
27.08.2008 um 09:54 Uhr
hi, also wie gesagt das klappt soweit ganz gut, allerdings auch NUR wenn auch kommentare zu dem erfasseten datensatz vorhanden sind bzw die WHERE Klausel halt zutrifft. ginge es auch irgendwie, dass der Datensatz von tabelle a gelöscht wird, ohne dass in Tabelle b ein Kommentar zu dem Datensatz aus Tabelle a erfasst wurde?
Bitte warten ..
Mitglied: SnowStar
27.08.2008 um 12:45 Uhr
Ist vollkommen richtig.
Alternativ bleibt dir dann nur das weiter oben aufgeführte ...
01.
ALTER TABLE [dbo].[Test1] ADD  
02.
	CONSTRAINT [FK_Test1_Test] FOREIGN KEY  
03.
04.
		[ID] 
05.
	) REFERENCES [dbo].[Test] ( 
06.
		[ID] 
07.
	) ON DELETE CASCADE 
umgesetzt auf deine Tabellen. So löscht der MySQL dann alles, was vorhanden ist, sobald du einen Benutzer löscht.
Bitte warten ..
Mitglied: Closed
27.08.2008 um 13:36 Uhr
habe jetzt mal eine sehr unsaubere lösung gemacht, die aber funktioniert:

abfrage auf die db und rückgabe aller datensätze in tblkommentar, die die id des zu löschenden datensatzes beinhalten von der anderen tabelle (notizen beispielsweise o.ä.)

dann abfrage der anzhal und for schleife, in der alle datensätze in der tblkommentar gelöscht werden. danach wird der eigentliche datensatz gelöscht

wie gesagt: recht unschön, aber funktioniert. danke stefan
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL-Query - Like Operator - Usereingabe
gelöst Frage von SchelinhoDatenbanken4 Kommentare

Hallo! Ich habe ein SQL-Script, welches als solches auf der Datenbank im SQL-Developer funktioniert. Mir geht es um eine ...

Datenbanken

SQL-Statement in Excel .dqy Query - (Zeitrahmen) funktioniert nicht ?

gelöst Frage von SchelinhoDatenbanken6 Kommentare

Hallo zusammen, folgendes Thema: ich habe ein SQL-Statement mit Variablen Usereingaben, welches im PL/SQL-Developer auch tadellos funktioniert. Die Variable ...

Datenbanken

SQL Anywhere: FOREACH möglich?

Frage von BirdyBDatenbanken4 Kommentare

Hallo zusammen und ein gutes neues Jahr, ich möchte gerne in unserem ERP-System, bzw. der Datenbank dahinter bestimmte Änderungen ...

Datenbanken

MS SQL: In einer Abfrage in Abhängigkeit von XYZ summieren SUM() - Als Query aus VBA heraus

gelöst Frage von AximandDatenbanken10 Kommentare

Hallo, ich brech mir gerade einen ab und hoffe, dass ihr mir helfen könnt. Ich habe eine Tabelle KHKLagerplatzbestaende. ...

Neue Wissensbeiträge
Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 48 MinutenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 53 MinutenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 59 MinutenHardware2 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

MikroTik RouterOS

Mikrotik Advisory: Vulnerability exploiting the Winbox port

Information von colinardo vor 1 StundeMikroTik RouterOS

Brand aktuell: Eine Schwachstelle im Winbox-Port bei Mikrotik Routern erlaubt das Auslesen der User-Datenbank der Router. Patch ist aktuell ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux22 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...