2014-02-23 5 views
0

출력 결과를 최고 점수를받은 학생 이름으로 찾아야합니까? 내 두 테이블은 내가 다음 코드에서 밖으로 요구를 반환하려고했지만이 같은 반환하지 않습니다두 테이블의 데이터를 가져 오는 중입니까?

CREATE TABLE student(Fields_ID INT, Name VARCHAR(20)); 
     INSERT INTO student(Fields_ID,Name) VALUES(30,'JYOTI'); 
     INSERT INTO student(Fields_ID,Name) VALUES(31,'KIRTI'); 
     INSERT INTO student(Fields_ID,Name) VALUES(32,'YOGITA'); 
     INSERT INTO student(Fields_ID,Name) VALUES(33,'RASHMI'); 
     INSERT INTO student(Fields_ID,Name) VALUES(34,'NUPUR'); 
SELECT * FROM student; 
CREATE TABLE Marks(Fields_ID INT, Student_ID INT NOT NULL,marks INT NOT NULL); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (30,40,100); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (31,41,88); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (32,42,72); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (33,43,33); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (34,44,15); 
SELECT * FROM Marks; 

입었네. 왜 그것이 올바른 가치를 반환하지 않는 모든 아이디어. 나는 MySQL에서 초보자이므로 문제를 찾을 수 없습니다.

SELECT student.name,Marks.marks 
    FROM student INNER JOIN Marks 
    ON student.Fields_ID=Marks.Fields_ID; 
+1

'Student_ID'링크는 무엇입니까? – hjpotter92

+0

반환되는 데이터는 무엇입니까? – Andrew

+1

그게 네가 필요로하는 것일까? [** Fiddle **] (http://sqlfiddle.com/#!2/a5324/2) –

답변

3
SELECT student.name,Marks.marks 
FROM student INNER JOIN Marks 
ON student.Fields_ID=Marks.Fields_ID 
where Marks.marks = (select max(marks) from Marks); 
1
SELECT student.name,Marks.marks 
    FROM student 
    INNER JOIN Marks 
    ON student.Fields_ID=Marks.Student_ID 
ORDER BY Marks.marks DESC 
LIMIT 1 
1
 SELECT student.name,Marks.marks 
     FROM student INNER JOIN Marks 
     ON student.Fields_ID=Marks.Fields_ID 
    ORDER by marks DESC; 

http://sqlfiddle.com/#!2/a5324/11

이 출력 바람직하다?

편집 : 결과 하나만 원할 경우 쿼리에 LIMIT 1을 추가하십시오.

+1

나는 '주문하기'가 아닌 'Group By'을 의미한다고 생각한다. – Andrew

+0

@Andrew, edited . – sinisake

관련 문제