2010-12-08 4 views
1

zu manipulieren Nehmen wir an, wir drei Tabellenwie implementieren und viele zu viele Beziehung in ASP.NET

Course haben - Tabelle

------------------ 
ID | CourseName 
------------------ 
1 | C++ 
2 | Java 
------------------ 

Lehrer - Tabelle

----------------------- 
ID | TeacherName 
----------------------- 
1 | Professor 1 
2 | Professor 2 
----------------------- 

CourseTeacher - Tabelle

---------------------------- 
ID | CourseID | TeacherID 
---------------------------- 
1 | 1  |  1 
2 | 1  |  2  
3 | 2  |  1 
4 | 2  |  2  
---------------------------- 

Nun, das soll man als AFAK machen, aber wie man Datensätze in einem solchen Format auswählt, einfügt, aktualisiert oder löscht!

ich meine, würde ich eine einfache verwenden "INSERT INTO ... VALUES (.., .., ..)" oder ein einfaches "SELECT * FROM ..."

aber jetzt abrufen die gleiche einzelne Information Ich muss einige Abfragen verwenden, die die 3 Tabellen irgendwie enthält (Hinweis: Ich verwende bereits Joins, aber immer noch wie !!)

Eine SQL-Anweisung auswählen und einfügen für meinen Fall wäre sehr hilfreich.

Ich benutze keine Modelle und dieses komplizierte Zeug, ich weiß nicht, was die Verwendung so einer Sache! Ich verwende SQL-Abfragen in meinen ADO.NET-Objekten und alles funktioniert soweit!

+0

okie: aber was ist Ihre Frage eigentlich? Kannst du bitte mehr ausarbeiten? Möchten Sie die CourseTeacher-Tabelle aktualisieren? – TalentTuner

+0

Wenn es gut funktioniert, warum dann ändern? – GvS

+0

@ Saurabh- Ich implementierte diese Struktur, weil ich zuerst ein Design auf einem Papier machte und ich sah, dass ich zwei Tische brauche (Kurse und Lehrer), dann gab es eine Viele-zu-viele-Beziehung, also recherchierte ich und fand, dass ich muss Erstellen Sie eine dritte Tabelle, die als Referenz dient, aber ich weiß nicht, welche Tabellen aktualisiert werden sollen, wenn ich einen neuen Kurs oder einen neuen Lehrer hinzufügen möchte! – lKashef

Antwort

2

Ich bin nicht sicher, zu verstehen, was Ihre Frage ist ...

Nehmen wir an, dass Ihre PK in jeder Tabelle wird automatisch erhöht.

einen Kurs hinzu: INSERT INTO Course VALUES 'My New Course' einen Lehrer hinzu: INSERT INTO Teacher VALUES 'My New Teacher'

Tu einen bestehenden Kurs zu einem vorhandenen Lehrer hinzu: Im schlimmsten Fall bedeutet, dass Sie nur die Namen der Lehrer kennen und die Kurs

SELECT ID FROM Teacher WHERE NAME = 'My New Teacher' -> id1 
SELECT ID FROM Course WHERE NAME = 'My New Course' -> id2 
INSERT INTO CourseTeacher(IDCOURSE,IDTEACHER) VALUES (id2,id1) 

in der Tat, in der Anwendung, wenn der Benutzer einen Kurs zu einem Lehrer hinzuzufügen wählt, sollten Sie bereits wissen, was die IDs sind, denn wenn Sie die Liste bekam die sie enthalten, werden Sie sicherlich das getan haben :

SELECT ID, NAME FROM Teacher 
SELECT ID, NAME FROM Course. 

Eine Verbindung, die nützlich sein kann, wenn das, was ich ist, schrieb nicht: http://www.singingeels.com/Articles/Understanding_SQL_Many_to_Many_Relationships.aspx

+0

Hier kommt Ihre erste richtige Antwort =) Herzlichen Glückwunsch und vielen Dank, es war nicht so schwer, aber alles war einfach überwältigend. BTW, ok sicher, dass ich mit meiner Datenbank mit den IDs nicht die Namen (Danke für den Rat aber though) ..now, wenn Sie hlep mit einer Select-Anweisung, die einen Kurs und alle zugehörigen Lehrer wählt? das würde das Leben tatsächlich erleichtern! – lKashef

+2

Thanks :) ich so etwas versuchen würde: SELECT Course.ID AS courseid, Course.NAME AS course, Teacher.ID AS TeacherId, Teacher.NAME AS TeacherName von Kurs LEFT OUTER JOIN CourseTeacher ON Course.ID = CourseTeacher.IDCourse INNER JOIN Lehrer ON CourseTeacher.IDTeacher = Teacher.ID Es gibt Ihnen alle Kurse und alle damit verbundenen Lehrer. Nicht ganz sicher über die INNER JOIN, aber wenn es nicht funktioniert, ersetzen Sie es mit LINKS OUTER JOIN und es wird funktionieren. – LaGrandMere

+0

Ich werde versuchen, dass .. + 1 Vielen Dank für die Mühe und willkommen zu stackoverflow =) – lKashef

1

es ist so einfach wie für andere Tabelle.

1 - Ich nehme an, Sie müssen Code für einfügen, aktualisieren, für Kurs und Lehrer Tabelle auswählen. Also fahre fort mit den gleichen Methoden.

2- aber für CourseTeacher-Tabelle (Junction-Tabelle), müssen Sie in dieser Tabelle einfügen, wenn Sie eigentlich entsprechende TearcherId und CourseId in entsprechenden Tabellen verfügbar haben.

Wenn Sie also einen neuen Datensatz in der CourseTeacher-Tabelle hinzufügen möchten, stellen Sie zunächst sicher, dass die entsprechenden Werte von courseid und teacherid angezeigt werden.

, wenn Sie Update in Verknüpfungstabelle wollen, verwenden Sie die Spalte von Id zu updae

+0

Vielen Dank Saurabh, ich brauchte nur einige Beispiel-Codes, die von LaGrandMere bereitgestellt wurde Danke für Ihre Zeit auf jeden Fall =) – lKashef

Verwandte Themen