2016-11-22 2 views
4

Ich habe zwei TabellenLöschen Datensatz in zwei Tabelle in einer SQL-Abfrage

EMPGROUP_TBL 
SEQID | MASTERID | BUSINESS_UNIT | DIVISION | SUB_DIVISION | CLASSIFICATION | SUB_CLASSIFICATION 

und

EMP_MASTERTBL 
MASTERID | EMPNO | LASTNAME | FIRSTNAME | JOBTITLE | LOCATION | 

In meinem Tisch in ASP.NET Jobtitel, BUSINESS_UNIT, DIVISION, SUB_DIVISION, Klassifizierung und SUB_CLASSIFICATION sind zusammen.

Also wenn ich den Datensatz in Girdview löschen muss ich nur den JOBTITLE in EMP_MASTERTBL und alle Datensätze in EMPGROUP_TBL löschen.

Dies ist mein Code

DELETE em.JOBTITLE, eg.BUSINESS_UNIT, eg.DIVISION, eg.SUB_DIVISION, eg.CLASIFFICATION, eg.SUB_CLASSIFICATION 
FROM EMP_MASTERTBL AS em, EMPGROUP_TBL AS eg 
WHERE em.MASTERID = eg.MASTERID AND eg.MASTERID = '76196' 

Jedesmal, wenn ich meinen Code ausführen oder ausführen ein Fehler ist, die Incorrect syntax near ','.

ich für meinen Code versucht, anderen Ansatz, aber es ist immer noch das gleiche.

Ich habe auch versucht, diese

DELETE JOBTITLE FROM EMP_MASTERTBL WHERE MASTERID = '76196'; 
DELETE FROM EMPGROUP_TBL WHERE MASTERID = '76196' 

Aber ich habe einen Fehler Invalid object name 'JOBTITLE'..

Was könnte das Problem sein? Vielen Dank.

+0

Sie müssen zwei separate "delete" -Abfragen zuerst in der Master-Tabelle und dann in einer anderen Tabelle ausführen. –

+1

Sie können die Spalte mit der Löschabfrage nicht löschen. Sie können den Wert durch den Wert null ersetzen, indem Sie die Abfrage aktualisieren. Warum verwenden Sie kein Update? –

Antwort

2

Wenn Sie DELETE FROM einer Tabelle löschen, die Sie nicht aus einem bestimmten Feld löschen, löschen Sie die gesamte Zeile. Aus diesem Grund enthalten Sie beim Schreiben der Löschanweisung keine Feldnamen.

Es ist auch möglich, eine Fremdschlüsselbeziehung zwischen Ihren beiden Tabellen einzurichten, sodass beim Löschen von EMP_MASTERTBL auch die untergeordneten Datensätze in EMPGROUP_TB gelöscht werden. http://www.mysqltutorial.org/mysql-on-delete-cascade/

bearbeiten

Bei genauerer Lektüre Ihrer aktualisierten Frage, ich denke, was Sie wirklich tun möchte, ist dies:

UPDATE EMP_MASTERTBL 
    SET JOBTITLE = NULL 
    WHERE MASTERID = '76196'; 

DELETE FROM EMPGROUP_TB 
    WHERE MASTERID = '76196'; 

Das heißt, du bist die JOBTITLE auf NULL Einstellung und Löschen aller zugehörigen Datensätze in EMPGROUP_TB.

+0

aber wenn ich DELETE FROM EMPGROUP_TB verwenden WHERE MASTERID = '76196'; Wird der gesamte Eintrag in EMPGROUP_TBL gelöscht? Einschließlich der NACHNAME usw.? – chobowski

+0

@chobowski Der gesamte Datensatz einschließlich aller Details wird gelöscht. Siehe überarbeitete Antwort. Wenn das ist. Was du willst, dann 'DELETE' ist nicht die richtige Aktion. – mendosi

+0

'Sie können nicht löschen aus mehreren Tabellen in einer einzigen Anweisung 'diese Aussage ** stimme ich absolut nicht mit **, können Sie sicherlich. Zum Beispiel eine innere oder linke Verbindung zu den Tabellen ... – Codexer

Verwandte Themen