2016-05-04 4 views
3

ich folgende Hausaufgaben zu tun haben, Ich habe 3 Tabellen jeweils:Delete Tupel von SQL db

TblNation with fields: id_nation (key), first nation, second nation 
TblAthlete with fields: id_athlete (key), name, surname 
TblUnion with fields: id_nation (key), id_athlete(key) 

Ich habe das Tupel löschen, um einen bestimmten Namen entspricht (es wird angenommen, dass es keine Redundanz des Namensfelds).

Ich habe versucht:

DELETE FROM TblNation INNER JOIN 
    TblUnion ON TblNation.id_Nation = 
    TblUnion.id_nation INNER JOIN 
    TblAthlete ON TblUnion.id_athlete = TblAthlete.id_athlete 
WHERE TblAthlete.surname = 'something' 

Aber dieser Code ... mir jemand nicht arbeiten kann, bitte helfen?

ps. Ich versuche, diese Abfrage in Microsoft SQL Server Management Studio Vielen Dank im Voraus diesen

+0

Bitte einige Beispieldaten zu Ihrer Frage hinzufügen und Sie werden mehr als wahrscheinlich eine schnellere, * richtige * Antwort. – Shaneis

+0

Danke für die Antwort, meinen Sie, dass Sie den Inhalt von Tabellen sehen müssen? –

+0

Inhalt oder Beispielinhalt wäre hilfreich. Wie es aussieht, sollte Ihre Abfrage jedoch funktionieren, wenn Sie die inneren Joins verwenden, schließen Sie möglicherweise Zeilen aus, von denen Sie erwarten, dass sie eingeschlossen werden. – Shaneis

Antwort

2

Versuchen auszuführen:

DELETE T 
FROM TblNation T 
INNER JOIN TblUnion TU 
    ON T.id_Nation = TU.id_nation 
INNER JOIN TblAthlete TA 
    ON TU.id_athlete = TA.id_athlete 
WHERE TA.surname = 'something' 
1

Ich denke, Sie verstehen, warum Sie wollen würden eine Drei-Tabelle nur beitreten schreiben löschen von Zeilen aus einer einzigen Tabelle ...

Basierend auf den Kriterien, die Sie angegeben (ich das Tupel entspricht einem bestimmten Namen löschen haben), warum Sie löschen nicht nur aus TblAthlete mit Feldern id_athlete (key), Vorname Familienname?

BEGIN TRAN 
    DELETE from TblAthlete 
    WHERE surname = 'something'; 
COMMIT