كيف يمكنني تحديث حقل في جدول بحقل من جدول آخر؟(SQL)

StackOverflow https://stackoverflow.com/questions/440702

  •  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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top