학생정보와, 시험정보가 있습니다.
그리고 각 학생들이
가장 잘한 시험의 날짜 및 점수,
가장 못한 시험의 날짜 및 점수
이렇게 뽑으려고 합니다.
create class people(
name varchar(20),
age short
);
create class exam(
whois people,
whenis date,
point float
);
insert into people values('김', 12) into p1;
insert into people values('이', 13) into p2;
insert into people values('박', 14) into p3;
insert into people values('홍', 15) into p4;
insert into exam values(p1, date'1/2/2009', 60);
insert into exam values(p1, date'1/4/2009', 70);
insert into exam values(p1, date'1/6/2009', 75);
insert into exam values(p2, date'1/7/2009', 80);
insert into exam values(p2, date'1/8/2009', 76);
insert into exam values(p3, date'1/9/2009', 99);
select name, age, exam_good.whenis, exam_good.point, exam_bad.whenis, exam_bad.point from (
select name, age,
(select exam from exam where whois = people order by point desc for orderby_num() = 1) exam_good,
(select exam from exam where whois = people order by point for orderby_num() = 1) exam_bad
from people
) A;
제가 원하는 결과는 다음과 같습니다.
김 12 1/6/2009 75 1/2/2009 60
이 13 1/7/2009 80 1/8/2009 76
박 14 1/9/2009 99 1/9/2009 99
홍 15 NULL NULL NULL NULL
하지만 해보면 다음과 같이 나옵니다.
김 12 1/6/2009 75 NULL NULL
이 13 1/7/2009 80 NULL NULL
박 14 1/9/2009 99 NULL NULL
홍 15 NULL NULL NULL NULL
전 제가 뭔가 잘못한 줄 알았는데, 아무래도 이건 버그 같습니다.
select name, (select exam from exam where whois = people order by point desc for orderby_num() = 1) from people;
이건 됩니다.
select (select exam from exam where whois = people order by point desc for orderby_num() = 1), name from people;
이건 안됩니다.
순서를 바꿨다고안되는건 무슨상황인가요