كيف يمكنني تحديث حقل في جدول بحقل من جدول آخر؟(SQL)
-
22-07-2019 - |
سؤال
جدولين:
COURSE_ROSTER
- يتضمن
COURSE_ID
كمفتاح خارجي لCOURSES
USER_ID
كحقل أحتاج إلى إدراجه فيCOURSES
COURSES
- يتضمن
COURSE_ID
كمفتاح أساسيINSTRUCTOR_ID
كحقل يحتاج إلى تحديثUSER_ID
المجال منCOURSE_ROSTER
ماذا سيكون UPDATE
يكون بناء جملة SQL؟أحاول هذا، لكن ليس جيدًا..أفتقد شيئًا ولا أستطيع العثور عليه عبر الإنترنت.
UPDATE COURSES
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID
WHERE COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
المحلول
لا يقوم جميع موردي قواعد البيانات (SQL Server وOracle وما إلى ذلك) بتنفيذ بناء جملة التحديث بنفس الطريقة...يمكنك استخدام صلة في SQL Server، لكن Oracle لن تحب ذلك.أعتقد أن الجميع تقريبًا سيقبلون استعلامًا فرعيًا مترابطًا
Update Courses C
SET Instructor_ID =
(Select User_ID from Course_Roster
Where CourseID = C.Course_ID)
ملحوظة:من الأفضل تسمية العمود User_ID الموجود في Course_Roster باسم InstructorId (أو Instructor_Id) لتجنب الارتباك
نصائح أخرى
Update Courses
SET Courses.Instructor_ID = Course_Roster.User_ID
from Courses Inner Join Course_Roster
On Course_Roster.CourseID = Courses.Course_ID
هذا على افتراض أن نظام إدارة قواعد البيانات (DBMS) الخاص بك يسمح بالانضمام إلى استعلامات التحديث الخاصة بك.SQL Server يسمح بذلك بالتأكيد.إذا لم تتمكن من القيام بشيء كهذا، فأنت بحاجة إلى التطلع إلى استخدام استعلام فرعي.
UPDATE COURSES
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID
FROM COURSES
INNER JOIN COURSE_ROSTER
ON COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
لماذا تحتاج إلى العمود Course.instructor_id إذا قمت بملئه بـ COURSE_ROSTER.user_id؟أليس تخزين زائدة عن الحاجة؟
UPDATE COURSES
SET INSTRUCTOR_ID = CR.USER_ID
FROM COURSES C
INNER JOIN COURSE_ROSTER CR
ON CR.COURSE_ID = C.COURSE_ID