STUDENT
学部の学生に関するデータを含むテーブルがあります。
STUDENT(ID, Name, Grade, ID_Tutor)
構造とデータ:
CREATE TABLE STUDENT
(`ID` int, `Name` varchar(5), `Grade` int, `ID_Tutor` int);
INSERT INTO STUDENT
(`ID`, `Name`, `Grade`, `ID_Tutor`)
VALUES
(1, 'A', 10, NULL),
(2, 'B', 9.5, 1),
(3, 'C', 9, 1),
(4, 'D', 8, 1),
(5, 'E', 7, 4),
(6, 'F', 8, 1),
(7, 'G', 5, 7),
(10, 'H', 6, 5)
(11, 'I', 7, 3),
(12, 'J', 9, 10),
(13, 'K', 9.6, 11),
(14, 'L', 8.9, 5),
(15, 'M', 9.9, 13),
(16, 'N', 7, 2),
(17, 'O', 7.9, 2),
(18, 'P', 2, 15);
トップ5の教員の成績:
`ID`, `Name`, `Grade`, `ID_Tutor`
(1, 'A', 10, NULL),
(15, 'M', 9.9, 13),
(13, 'K', 9.6, 11),
(2, 'B', 9.5, 1),
(3, 'C', 9, 1),
(12, 'J', 9, 10),
結果として、上記の表からこれらのチューターを持つ学生が表示されます。
SQLクエリ(MYSQL)を作成して検索したい
- 学生名、
- 家庭教師の名前と
- 家庭教師グレード
チューターがトップ5の教員の学生の成績を持っている学生の場合(およびOracleソリューションの場合は使用せずに)。LIMIT
ROWNUM
結果は次のようになります。
| student name | tutor name | tutor grade |
'B' 'A' 10
'C' 'A' 10
'D' 'A' 10
'F' 'A' 10
'P' 'M' 9.9
'M' 'K' 9.6
'N' 'B' 9.5
'O' 'B' 9.5
'I' 'C' 9
私はこのようなことを試しましたが(動作しませんでした)、私は多くのことを複雑にしていると思います...(そして私は使用すべきではありませんROWNUM
)
SELECT
s.ID,
s.Name Student,
s.Grade,
p.ID_Tutor,
p.Grade
FROM
STUDENT s,
(SELECT * FROM
(SELECT * FROM
(SELECT
t.Name Tutor ,
t.ID ,
Grade Grade_Tutor
FROM STUDENT s
JOIN STUDENT t
on s.ID_Tutor = t.ID
GROUP BY t.Name, t.ID)
ORDER BY 3 desc )
WHERE ROWNUM < 6) p
WHERE s.ID_Tutor = p.ID
このエラーをください:
#1248 - Every derived table must have its own alias
前もって感謝します!