Обновление TSQL с тремя объединениями - PullRequest
2 голосов
/ 15 октября 2011

У меня есть следующий оператор TSQL Select

select s.StudentID, s.LastName, s.FirstName ,o.CourseID, c.CourseTitle, o.Semester, s.Feedback_Status
    from Students as s join StudentEnrollments as se
    on s.StudentID = se.StudentID
    join OfferedCourses as o
    on o.SectionID = se.SectionID
    join Courses as c
    on c.CourseID = o.CourseID
    where  s.StudentID = 4 and o.Semester='spring'

это возвращает следующее

StudentID   LastName     FirstName  CourseID    CourseTitle  Semester  Feedback_Status
----------- ---------------------------------------------------------------------------
4           Fakhouri     Fadi       1           MathI        Spring          0             
4           Fakhouri     Fadi       5           MathII       Spring          0

Я написал запрос на обновление, чтобы изменить поле feedback_status для конкретной строки на 1

update s
set s.Feedback_Status = 1
from Students as s join StudentEnrollments as se
on s.StudentID = se.StudentID
join OfferedCourses as o
on o.SectionID = se.SectionID
join Courses as c
on c.CourseID = o.CourseID
where  s.StudentID = 4 and o.Semester='spring' and c.CourseID=1 

результат, который я получаю

StudentID   LastName     FirstName  CourseID    CourseTitle  Semester  Feedback_Status
----------- ---------------------------------------------------------------------------
4           Fakhouri     Fadi       1           MathI        Spring          1           
4           Fakhouri     Fadi       5           MathII       Spring          1

Поле feedback_status обновляется в обеих строках, понятия не имею, почему. Спасибо за любую помощь

Я не могу переместить feeback_status, поле является логическим значением, которое сообщает мне, если пользователь ввел отзыв. Приложение работает, вводя studentID, а затем в запросе linq (через сетку данных) отображаются все курсы, в которые зачислен студент. Рядом с каждой строкой в ​​сетке данных есть кнопка для добавления отзыва. Мне нужно записать это, используя fedback_status в качестве флага.

Я просмотрел таблицы и обнаружил проблему, мне нужно переместить поле feedback_status в Таблица StudentEnrollments, таким образом, у меня есть дубликаты идентификаторов студентов и fedback_status

Спасибо

1 Ответ

1 голос
/ 15 октября 2011

Вы обновляете Feedback_Status в таблице Students, я предполагаю, что у вас есть только одна запись для StudentID 4. Когда вы выполняете обновление, статус этой записи устанавливается в 1, а затем я думаю, эта запись появляется дважды в ваших результатах.

Вы можете переместить столбец Feedback_Status в другую таблицу, возможно, Courses?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...