Как я могу вставить значения из двух таблиц в третью?
Всем привет,
В настоящее время я борюсь с вставкой некоторых значений из регистрационной формы в базу данных.У меня есть 2 таблицы,в которые я хочу вставить данные:RegisterTeacher и TeacherCourses.теперь у меня есть проблема с логикой здесь,хотя я искал в интернете, чтобы увидеть различные возможности сделать это.Вот эти таблицы:
CREATE TABLE [dbo].[RegisterTeacher] ( [SNTeacher] INT NOT NULL, [UserName] NVARCHAR (50) NOT NULL, [pwd] INT NOT NULL, [fullName] NVARCHAR (MAX) NOT NULL, [education] NVARCHAR (50) NULL, PRIMARY KEY CLUSTERED ([SNTeacher] ASC) );
CREATE TABLE [dbo].[AvailableCourses] ( [courseName] NVARCHAR (MAX) NOT NULL, [education] NVARCHAR (50) NOT NULL, [ClassID] NVARCHAR (50) NULL, [courseID] INT NOT NULL, PRIMARY KEY CLUSTERED ([courseID] ASC) );
CREATE TABLE [dbo].[TeacherCourses] ( [courseID] INT NOT NULL, [SNTeacher] INT NOT NULL, [IDKey] NCHAR (10) NOT NULL, PRIMARY KEY CLUSTERED ([IDKey] ASC), CONSTRAINT [FK_TeacherCourses_ToTable] FOREIGN KEY ([SNTeacher]) REFERENCES [dbo].[RegisterTeacher] ([SNTeacher]), CONSTRAINT [FK_TeacherCourses_ToTable_1] FOREIGN KEY ([courseID]) REFERENCES [dbo].[AvailableCourses] ([courseID]) );
Теперь я хочу добиться следующего:для таблицы RegisterTeacher она работает для сохранения значений,так как я делаю это следующим образом:
connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\User\\Desktop\\BackupVersion\\LastAndFinalVersion\\DatabaseStudents.mdf;Integrated Security=True"; using (SqlConnection con = new SqlConnection(connectionString)) { sql = "Insert into RegisterTeacher(SNTeacher,UserName,pwd,fullName,education)values(@SNTeacher,@UserName,@pwd,@fullName,@education)"; con.Open(); using (SqlCommand cmd = new SqlCommand(sql, con)) { cmd.Parameters.AddWithValue("@SNTeacher", SqlDbType.Int).Value=SNTeacher; cmd.Parameters.AddWithValue("@UserName", SqlDbType.NVarChar).Value = UserName; cmd.Parameters.AddWithValue("@pwd", SqlDbType.Int).Value = pwd ; cmd.Parameters.AddWithValue("@fullName", SqlDbType.NVarChar).Value = fullName ; cmd.Parameters.AddWithValue("@education", SqlDbType.NVarChar).Value=education; cmd.ExecuteNonQuery(); }
Моя проблема заключается в том, что я хочу сохранить имя курса в таблице TeacherCourses.Я хотел бы сохранить как SNTeacher, так и courseName-где courseName берется из AvailableCourses и передается со ссылкой courseID на таблицу TeacherCourses вместе с SNTeacher из таблицы RegisterTeacher.Как будет выглядеть синтаксис?
Что я уже пробовал:
Я попробовал сделать следующее:Я сделал отдельный запрос для вставки данных в TeacherCourses:
using (SqlCommand com = new SqlCommand(query, con)) { query = "Insert into TeacherCourses (courseID,SNTeacher) select courseID,SNTeacher from RegisterTeacher p inner join AvailableCourses c ON p.courseID=c.courseID AND p.SNTeacher=c.SNTeacher"; SelectedCourses = new ObservableCollection<AvailableCours>(); foreach (var item in Courses) { if (item.IsChecked) { SelectedCourses.Add(item); } com.Parameters.AddWithValue("@courseName", SqlDbType.NVarChar).Value = item.courseName; com.ExecuteNonQuery();