IDのすべての最小レコードを取得する必要があるSQLの選択に取り組んでいます。私の問題は、コードが機能していると思っていても、他の列に対して誤った値を返すことがよくあることです。これは、集計min関数をサポートする必要があるために使用できなかったためと思われます。これが私のコードです。
SELECT *
FROM example_students
INNER JOIN
(SELECT id, student, test, subject, MIN(score), semester
FROM example_student_scores
WHERE studentid=94
GROUP BY studentid, test, subject) as scores
ON example_students.id=scores.studentid
これが私のコードに実行させたいことです。
例の表から、学生がid#94を持っている個別のテストと科目の組み合わせごとの最小スコアを選択します
例の2つの(大幅に変更された)テーブルを次に示します(こことコードでもすべての列名を変更しました。
example_students
id name
----+-----------+
94 Bob
1023 Thomas
。
example_students_scores
id studentId test subject score semester
----+-----------+-----------+-----------+-----------+-----------
0 94 quiz math 46 fall
1 94 quiz math 71 fall
2 94 quiz math 63 winter
3 94 midterm math 94 winter
4 94 midterm science 72 fall
5 94 quiz math 50 spring
6 94 final math 76 spring
7 1023 quiz math 6 spring
8 1023 quiz math 52 winter
9 1023 quiz science 68 fall
..*
結果は次のようになります
results
id studentId test subject score semester
----+-----------+-----------+-----------+-----------+-----------
0 94 quiz math 46 fall
3 94 midterm math 94 winter
4 94 midterm science 72 fall
6 94 final math 76 spring
問題は、学期の列(およびライブ作業で使用している他のすべての列)の値が間違ってしまうことです。
これでどこにも行けないのに長い時間がかかったことを考えると、2つのサンプルデータベースを作成するためのSQLは次のとおりです。
drop table if exists example_students;
drop table if exists example_students_scores;
create table example_students(
id int(10) primary key,
name char(25)
);
create table example_students_scores(
id int(10) not null,
studentId int(10) not null,
test char(20),
subject char(20),
score int(10) not null default '0',
semester char(20),
primary key (id),
index studentid (studentid)
);
insert into example_students values ('94','Bob');
insert into example_students values ('1023','Thomas');
insert into example_students_scores values ('0' ,'94' ,'quiz' ,'math' ,'46' ,'fall');
insert into example_students_scores values ('1' ,'94' ,'quiz' ,'math' ,'71' ,'fall');
insert into example_students_scores values ('2' ,'94' ,'quiz' ,'math' ,'63' ,'winter');
insert into example_students_scores values ('3' ,'94' ,'midterm' ,'math' ,'94' ,'winter');
insert into example_students_scores values ('4' ,'94' ,'midterm' ,'science' ,'72' ,'fall');
insert into example_students_scores values ('5' ,'94' ,'quiz' ,'math' ,'50' ,'spring');
insert into example_students_scores values ('6' ,'94' ,'final' ,'math' ,'76' ,'spring');
insert into example_students_scores values ('7' ,'1023' ,'quiz' ,'math' ,'6' ,'spring');
アドバイスやヒントをいただければ幸いです。公開してから1週間後に、あなたの作業が間違っていることに気付くのは非常に恥ずかしいことです。