2010-12-08 3 views
1

Supposons que nous avons trois tablescomment mettre en œuvre et de manipuler une relation plusieurs à plusieurs dans ASP.NET

Cours - Table

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

Enseignant - Table

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

CourseTeacher - table

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

Maintenant, c'est ce qu'il faut faire comme AFAK, mais comment sélectionner, insérer, mettre à jour, supprimer des enregistrements dans un tel format!

Je veux dire, j'utiliser un simple "INSERT INTO ... VALUES (.., .., ..)" ou un simple "SELECT * FROM ..."

mais maintenant pour récupérer la même information que je dois utiliser certaines requêtes qui inclut les 3 tables en quelque sorte (Indice: j'utilise déjà des jointures, mais comment encore !!)

Une instruction SQL de sélection et d'insertion pour mon cas serait très utile.

Je n'utilise aucun modèle et ce truc compliqué, je ne sais pas à quoi ça sert! J'utilise des requêtes SQL dans mes objets ADO.NET et tout fonctionne correctement jusqu'à présent!

+0

okie: mais quelle est votre question en fait? pouvez-vous élaborer plus? Voulez-vous mettre à jour la table CourseTeacher? – TalentTuner

+0

Si cela fonctionne bien, alors pourquoi le changer? – GvS

+0

@ Saurabh- J'ai implémenté cette structure parce que j'ai d'abord fait un dessin sur un papier et j'ai vu que j'avais besoin de deux tables (Courses And Teachers) alors il y avait une relation many-to-many, donc j'ai recherché et trouvé créer une troisième table qui fonctionne comme une référence, mais je ne sais pas quelles tables mettre à jour si je veux ajouter un nouveau cours ou un nouveau professeur! – lKashef

Répondre

2

Je ne suis pas sûr de comprendre ce que votre question est ...

Supposons que votre PK dans chaque tableau est automatiquement incrémenté.

Pour ajouter un cours: INSERT INTO Course VALUES 'My New Course' Pour ajouter un enseignant: INSERT INTO Teacher VALUES 'My New Teacher'

Tu ajouter un cours existant à un enseignant existant: Dans le pire scénario, ce qui signifie que vous ne connaissez que le nom de l'enseignant et la cours

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) 

en fait, dans votre application, lorsque votre utilisateur sélectionne un cours à ajouter à un enseignant, vous devez déjà savoir ce que les ID sont, parce que quand vous avez la liste qui les contient, vous avez certainement fait cela :

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

Un lien qui peut être utile si ce que je l'ai écrit est pas: http://www.singingeels.com/Articles/Understanding_SQL_Many_to_Many_Relationships.aspx

+0

Voici votre première bonne réponse =) félicitations et Merci beaucoup, ce n'était pas si difficile mais tout était juste écrasant. btw, ok sûr que je m'occupe de ma base de données en utilisant les identifiants pas les noms (merci pour le conseil cependant) .. maintenant si vous pouviez hlep avec une instruction select qui sélectionne tout cours et tous ses enseignants associés? cela rendrait la vie plus facile en effet! Merci :) – lKashef

+2

Je voudrais essayer quelque chose comme ça: SELECT Course.ID AS CourseID, Course.NAME AS courseName, Teacher.ID AS TeacherId, Teacher.NAME AS TeacherName DE GAUCHE Cours OUTER JOIN CourseTeacher SUR Course.ID = CourseTeacher.IDCourse INNER JOIN Enseignant ON CourseTeacher.IDTeacher = Teacher.ID Il vous donnera tous les cours et tous les enseignants qui leur sont associés. Vous n'êtes pas sûr de l'INNER JOIN, mais si cela ne fonctionne pas, remplacez-le par LEFT OUTER JOIN et cela fonctionnera. – LaGrandMere

+0

Je vais essayer que .. + 1 Merci pour l'effort et bienvenue à stackoverflow =) – lKashef

1

il est aussi simple que pour les autres table.

1 - Je suppose que vous devez avoir du code pour l'insertion, la mise à jour, la sélection pour le cours et la table pour l'enseignant. Continuez donc à utiliser les mêmes méthodes.

2- mais pour la table CourseTeacher (table de jonction), vous devez insérer dans cette table lorsque vous avez réellement TearcherId et CourseId corrigibles dans les tables de repérage. Par conséquent, lorsque vous souhaitez ajouter un nouvel enregistrement dans la table CourseTeacher, assurez-vous d'abord que les valeurs respectives de courseid et de teacherid sont présentes.

lorsque vous voulez mettre à jour dans le tableau de jonction, utilisez la colonne Id à updae

+0

Merci Saurabh, j'avais juste besoin de quelques exemples de codes - qui a été fourni par LaGrandMere- Merci pour votre temps de toute façon =) – lKashef

Questions connexes