2017-01-09 3 views
0

auf sqlServer ich habe 2 Tabellen verknüpfen:wie aus 2 Feldern auf 1 Feld auf einem anderen Tisch

table1: Students => studentName=david, class1Id=2,class2Id=4 

table2: classes=> classId=2, className="class1" 

     classId=4, className="class2" 

class1Id und class2Id beziehen sich auf classes.classId

i SQL-Abfrage tun wollen zu bekommen:

studentName=david, className1="class1",className2="class2", 

weiß, dass ich zwischen 2 Tisch trete aber nicht so

danke!

+2

Die Wurzel dieses Problems ist die Gestaltung der Tabelle fehlerhaft ist. Dies hat so genannte Wiederholungsgruppen. Es verstößt gegen 1NF und sollte um jeden Preis vermieden werden. Überlegen Sie, wie schlecht dieser Entwurf wird, wenn Sie eine dritte Klasse pro Schüler zulassen müssen. Sie müssen die Tabelle ändern und ändern Sie immer einzelne Abfrage, die diese Informationen sieht. Die Beziehung zwischen Schülern und Klassen sollte viele zu viele sein. Um dies richtig handhaben zu können, benötigen Sie eine Bridge-Tabelle für StudentID und ClassID. Dein Professor hat dir hier eine verlierende Hand gegeben. Sie möchten, dass Sie ein schlechtes Design abfragen. Schande über sie!! –

Antwort

0

Sie müssen nur JOIN-Classes zweimal:

Select S.StudentName, 
     C1.ClassName As ClassName1, 
     C2.ClassName As ClassName2 
From Students S 
Join Classes  C1 On C1.ClassId = S.Class1Id 
Join Classes  C2 On C2.ClassId = S.Class2Id 
Verwandte Themen