Buscar 5 melhores alunos de cada sala
Preciso encontrar as 5 melhores notas de cada sala, sendo que existem de 5 a 6 salas para cada série. Alguem pode me dar uma luz?
SELECT t1.nota, t2.sala, t3.serie
FROM aluno AS t1
LEFT JOIN sala AS t2 ON t1.sala = t2.id
LEFT JOIN serie AS t3 ON t1.serie = t3.id
ORDER BY t1.serie, t1.sala, t1.nota
LIMIT 0 , 30
CREATE TABLE IF NOT EXISTS `aluno` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`serie` int(11) NOT NULL,
`sala` int(11) NOT NULL,
`nota` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Extraindo dados da tabela aluno
--
INSERT INTO aluno (id, serie, sala, nota) VALUES
(1, 1, 2, 9),
(2, 1, 2, 10),
(3, 2, 2, 8),
(4, 2, 2, 9),
(5, 1, 2, 10),
(6, 5, 2, 10),
(7, 3, 3, 8),
(8, 3, 3, 9),
(9, 3, 3, 10),
(10, 3, 3, 10);
-- --------------------------------------------------------
--
-- Estrutura da tabela sala
--
CREATE TABLE IF NOT EXISTS `sala` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`serie` varchar(50) NOT NULL,
`sala` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Extraindo dados da tabela sala
--
INSERT INTO sala (id, serie, sala) VALUES
(1, '1', '1-101'),
(2, '1', '1-102'),
(3, '1', '1-103'),
(4, '1', '1-104'),
(5, '2', '2-101'),
(6, '2', '2-102'),
(7, '2', '2-103'),
(8, '2', '2-104');
-- --------------------------------------------------------
--
-- Estrutura da tabela serie
--
CREATE TABLE IF NOT EXISTS `serie` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`serie` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Extraindo dados da tabela serie
--
INSERT INTO serie (id, serie) VALUES
(1, '1 ano'),
(2, '2 ano');
Discussão (4)
Carregando comentários...