-1

次の問題があります。

Compにすべての生徒を追加しようとしています。科学。コースへの部門、関係のDDLは次のとおりです。

希望コースの値は ('CS-001', 'Weekly Seminar', 'Comp. Sci.', 0)


Department 
      (dept_name [primary key], building, budget)

Course 
      (course_id [primary key], title, dept_name, credits)

Instructor 
      (ID [primary key], name, dept_name, salary) 
      Foreign Key is dept_name references Department

Section
      (course_id [primary key], sec_id [primary key], semester [primary key], year [primary key], building, room_number, time_slot_id) 
      Foreign Key course_id references Course

Teaches 
      ( ID [primary key], course_id [primary key], sec_id [primary key], semester [primary key], year [primary key]) 
       Foreign key ID references Instructor,
Foreign Key (course_id,sec_id,semester,year) references Section

Takes 
      (ID [primary key], course_id [primary key], sec_id [primary key], semester [primary key], year [primary key], grade) 
      Foreign key(course_id,sec_id,semester,year) references section Foreign key(ID) references student

Student 
      (ID [primary key], name, dept_name, tot_cred) Foreign key(dept_name) references department

問題は、更新ステートメントを使用しようとするとエラーが発生することです (エラーは です1241 Operand should have 1 column)。構文が問題である可能性が高いため、構文を修正してください。

update takes
set ID=ID, course_id='CS-001', sec_id='1', semester='Fall', year=2009, grade=null
where
(
select distinct name, ID
from student natural join takes
where dept_name='Comp. Sci.'
);

申し訳ありませんが、私は MySQL の初心者です。私の構文を修正し、おそらく私のものよりも優れた解決策を教えていただければ幸いです (私のものが解決策であるかどうかはわかりません)。

4

2 に答える 2

1

テーブルがどのように見えるかはわかりませんが、takesテーブルを正しく割り当てていると仮定すると、WHERE ステートメントは比較操作を提供していません。WHERE は、返された特定の行に対して true または false の結果になる必要があります。そのため、最初のクエリに参加studentし、where を使用して結果を比較する必要があります。

takesあなたの質問にはとテーブルの両方に関する情報が欠けているstudentため、クエリを正しく書き直すことはできません。

于 2012-09-26T23:54:26.243 に答える
1

youWHERE句で列を指定していないため、取得していますError 1241 Operand should contain 1 column(s)

update takes
set ID=ID, course_id='CS-001', sec_id='1', semester='Fall', year=2009, grade=null
where
(
   select distinct name, ID
   from student natural join takes
   where dept_name='Comp. Sci.'
);

または、両方のテーブルを結合します

UPDATE  takes a 
        INNER JOIN student b
            ON a.ID = b.ID 
SET     a.ID = ID, 
        a.course_id='CS-001', 
        a.sec_id='1', 
        a.semester='Fall', 
        a.`year` = 2009, 
        a.grade = 0        -- you can't set NULL value when updating a column
WHERE   b.dept_name = 'Comp. Sci.'
于 2012-09-26T23:56:29.317 に答える