2012-01-25 4 views
-1

스크린 샷에서 볼 수있는 것처럼 학생 정보가 포함 된 테이블 Study이 있습니다. 나는 다음 쿼리 study_id = 501 아래 행의 바로 study_start 열을 업데이트 쓴 :불필요한 mysql 열 업데이트

student_id은 모든 학생의 고유 한 ID입니다
UPDATE 
    student,language_german,language_english,study,home_university, 
    host_university,transfer,home_address,host_address,alumni 
SET 
    firstname = 'Omega', 
    lastname = 'Rugal', 
    birthdate = '0000-00-00', 
    nationality = '', 
    email= '', 
    group_name = '', 
    gender = '', 
    religion = '', 
    creation_date = NOW(),       
    user_id = 43, 

    german_level = '', 
    german_status = '', 
    german_grade = '', 

    english_level = '', 
    english_status = '', 
    english_grade = '', 

    transfer_type = '', 
    study_start = "2013-02-01", 
    matriculation_no = '0',        
    application_no = '0', 
    applicationno_old = '0', 
    overall_status = '', 
    status_date = '0000-00-00', 
    comment = ' ', 
    thesis_status = '', 

    home_university_name = '', 
    home_degree_program = '', 
    home_study_program = '', 

    host_university_name = '', 
    host_degree_program = '', 
    host_study_program = '', 

    room_status = '', 
    room_deposit = '0', 
    room_name = '', 
    application_letter_home = '0', 
    motivation = '', 
    sponsorship = '', 
    application_letter_abroad = '0', 
    cv = '0', 
    result = '', 
    learning_agreement = '0', 
    health_insurance = '0', 
    supervisor_home = '', 
    supervisor_abroad = '', 
    visa = '0', 
    vaccination = '0', 
    wishlist = '', 

    home_street = '', 
    home_co = '', 
    home_zip = '', 
    home_city = '', 
    home_state = '', 
    home_country = '', 

    host_street = '', 
    host_co = '', 
    host_zip = '', 
    host_city = '', 
    host_state = '', 
    host_country = '', 

    thesis_grade = '0.0', 
    average_grade = '0.0', 
    study_time = '0', 
    last_email = '', 
    last_contact = '0000-00-00', 
    last_info = '' 
WHERE 
    student.student_id = language_german.student_id 
    AND student.student_id = language_english.student_id 
    AND study.study_id = home_university.study_id 
    AND study.study_id = host_university.study_id 
    AND student.student_id = transfer.student_id 
    AND student.student_id = home_address.student_id 
    AND student.student_id = host_address.student_id 
    AND student.student_id = alumni.student_id 
    AND student.student_id = 832 

.

끔찍한 일이 다른 행의 모든 ​​열이 정상이이 값 study_start으로 업데이트받을 것입니다.

+1

study_start 열만 업데이트하려는 경우 다른 모든 열을 특정 값으로 설정하는 이유는 무엇입니까? –

+1

이 쿼리에서 study_id = 501은 어디에 있습니까? –

답변

1

귀하의 업데이트는 단지 study_start보다 더 많은 업데이트합니다. study을 특정 student_id에 연결하는 참여가 없습니다. student ~ home_university 또는 그 외의 항목을 연결하는 university_id이 있습니까?

정말 이러한 테이블을 모두 가입해야합니까? study_id을 아는 경우 왜이 작업을 수행 할 수 없습니까?

UPDATE study set study_start='2013-02-01' where study_id=501; 
+0

나는 웨스가이 문제를 발견했다고 생각한다. OP의 진술에는 10 개의 테이블이 있지만 필요한 것은 9 개가 아니라 8 개의 조인 만 있습니다. 'JOIN' 문법이 사용되지 않고 비참한 효과가있는 또 다른 경우. –

관련 문제