1
大学席番号(USN)と件名を指定して、学生の出席を更新しようとしています。 次のクエリを使用しましたが、影響を受けていない行はありません。MySQLで更新コマンドエラーが発生しました
Update `Student Attendance` as sa
JOIN Subjects as s ON sa.`Subject Code`=s.`Subject Code`
set sa.Attendance ='5' AND sa.`Absent Days`='2017-10-12'
where sa.USN ='1ks15bt001' AND s.Subject='English';
私だけでは、以下のクエリを実行したとき、私は出力としてこれを得た:学生表の
Select sa.USN,s.Subject,sa.Attendance
From `Student Attendance` as sa
JOIN Subjects as s ON sa.`Subject Code`=s.`Subject Code`
where sa.USN ='1ks15bt001' AND s.Subject='English';
スキーマ:
CREATE TABLE `Student` (
`USN` varchar(10) NOT NULL,
`DOB` date NOT NULL,
`Dep` varchar(3) NOT NULL,
`SEM` int(1) NOT NULL,
`Class` varchar(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `Student`
ADD PRIMARY KEY (`USN`),
ADD KEY `Dep` (`Dep`);
学生の出席:
のCREATE TABLE `Student Attendance` (
`USN` varchar(10) NOT NULL,
`Subject Code` varchar(6) NOT NULL,
`Attendance` int(11) NOT NULL DEFAULT '0',
`Absent Days` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `Student Attendance`
ADD PRIMARY KEY (`USN`,`Subject Code`),
ADD KEY `ABC` (`Subject Code`);
件名:
CREATE TABLE `Subjects` (
`Subject` varchar(40) NOT NULL,
`Subject Code` varchar(6) NOT NULL,
`Dep` varchar(3) NOT NULL,
`Sem` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `Subjects`
ADD PRIMARY KEY (`Subject Code`,`Subject`) USING BTREE,
ADD KEY `bgf` (`Dep`);
私は悪いですが、私はそれがちょうどストリングのようにクエリに影響するとは思いません。 – Suzume
このようなスキーマは、 [ゼロ、1つまたは無限の規則](http://en.wikipedia.org/wiki/Zero_one_infinity_rule)の [データベースの正規化](http://en.wikipedia.org/)に違反しているようです。 wiki/Database_normalization)を使用することができます。適切な1対多の関係を作成して、ここでの日数が適切なリレーショナルであり、任意のフィールド長の制約に制限されないようにする必要があります。 – tadman