[英]Update Join Query not Updating Record in The Table
在我的考勤表中,我想從StudentCourse
橋表更新帶有S_ID
和C_ID
的記錄,但不更新。
當我用它來選擇和顯示StudentCourse
表中的2列和Attendance
表中的1列時,它工作但當我用它來更新現在為空的考勤表時它不起作用
UPDATE Attendance
SET S_ID = sc.S_ID,
C_ID = sc.C_ID
FROM Attendance a
left outer join StudentCourse sc ON a.S_ID = sc.S_ID
WHERE sc.S_ID=2 and sc.C_ID=2
實際上有兩個表:
我正在做的是通過連接表並從所有這些表中選擇S_ID
, S_Name
, C_ID
和Pre_Abs
( Attendance
表列)列來顯示datagridview
上的數據。
現在,我想在單擊按鈕時將datagridview
的信息插入到考勤表中。
我已經通過使用datagrdview.rows[i].cell[2]
屬性對出勤表進行簡單的插入查詢。
我想知道是否有更好的想法這樣做,以便我可以使用JOIN
而不是使用帶for循環的datagridview
屬性。
現在雖然我的出勤表是空的Student
, Course
和StudentCourse
表中填充數據。
我想要的是顯示來自studentCourse
表的記錄( S_ID
, C_ID
)和來自Attendance
表的( Pre_Abs
)以及當我提交出勤時; 我希望它在出勤表中針對每個S_ID
, C_ID
存儲Pre_abs
記錄。
我認為我不能再解釋了。
您已為表Attendance聲明了別名。 因此,您應該在列名之前使用別名引用作為其他表中也可用的相同列名。 你可以試試這個 -
UPDATE a
SET a.S_ID = sc.S_ID,
a.C_ID = sc.C_ID
FROM Attendance a
LEFT OUTER JOIN StudentCourse sc ON a.S_ID = sc.S_ID
WHERE sc.S_ID=2 and sc.C_ID=2
我也懷疑你在哪里條件更新表出勤但過濾記錄表StudentCourse。 使用錯誤的過濾器可以導致更新表中的所有行出席。 請小心。
嗯。 我不明白你的Attendance
表首先存在的原因。 您的StudentCourse
表似乎已包含有關哪些學生正在學習哪些課程的信息。 我只是假設Attendance
表必須處理在課程中為每個單一講座/課程注冊學生出勤率。
無論如何,正如@Psi已經評論過,您似乎最初想要一個INSERT查詢在Attendance
表中創建一個記錄,其中包含基於StudentCourse
表中信息的數據。 我猜你在考慮它太難了。 ;-)你可以嘗試這樣的事情:
INSERT INTO Attendance (S_ID, C_ID, Pre_Abs)
SELECT S_ID, C_ID, Pre_Abs
FROM StudentCourse
WHERE S_ID = 2 AND C_ID = 2
但是,目前還不清楚應該如何填寫字段Pre_Abs
...你試圖從表Attendance
,但這似乎是無效的。
此外,在創建INSERT查詢時,請確保源數據值(在SELECT或VALUES子句中)與目標字段的順序相同(在INSERT子句中)。 如果字段/值順序不匹配,則數據會混淆(如果查詢因數據類型錯誤而未失敗)!
最后但並非最不重要:如果Attendance
和StudentCourse
表共享相同的復合鍵(S_ID, C_ID)
,則在加入這些表的相關記錄時應使用該完整鍵:
FROM
Attendance AS A
LEFT JOIN StudentCourse AS SC ON
SC.S_ID = A.S_ID AND
SC.C_ID = A.C_ID
希望這有所幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.