Code : Tout sélectionner
SELECT l.id_eleve, j1.cnt, j2.cnt, …
FROM liste_eleves as l
JOIN (SELECT id_eleve, COUNT(*) AS cnt FROM eleves_infractions WHERE id_infraction = id1 GROUP BY id_eleve) AS j1 ON j1.id_eleve = l.id_eleve
JOIN (SELECT id_eleve, COUNT(*) AS cnt FROM eleves_infractions WHERE id_infraction = id2 GROUP BY id_eleve) AS j2 ON j2.id_eleve = l.id_eleve
…
ORDER BY j1.cnt DESC, j2.cnt DESC, …, l.id_eleve ASCCode : Tout sélectionner
SELECT l.id_eleve, j1.retard, j2.exp
FROM liste_eleves as l
JOIN (SELECT id_eleve, COUNT(*) AS retard FROM rapports WHERE motif = "Retard" GROUP BY id_eleve) AS j1 ON j1.id_eleve = l.id_eleve
JOIN (SELECT id_eleve, COUNT(*) AS exp FROM rapports WHERE motif = "Expulsion" GROUP BY id_eleve) AS j2 ON j2.id_eleve = l.id_eleve
ORDER BY j1.retard DESC,l.id_eleve ASC
Code : Tout sélectionner
GROUP BY id_eleve, motifCode : Tout sélectionner
SELECT l.id_eleve, j1.retard, j2.exp
FROM liste_eleves as l
JOIN (SELECT id_eleve, COUNT(*) AS retard FROM rapports WHERE motif = "Retard" GROUP BY id_eleve, motif) AS j1 ON j1.id_eleve = l.id_eleve
JOIN (SELECT id_eleve, COUNT(*) AS exp FROM rapports WHERE motif = "Expulsion" GROUP BY id_eleve, motif) AS j2 ON j2.id_eleve = l.id_eleve
ORDER BY j1.retard DESC,l.id_eleve ASC
Et maintenant la table liste_elevesChamp Type Interclassement Attributs Null Défaut Extra Action
no int(5) Non auto_increment
id_eleve int(5) Non 0
motif varchar(30) latin1_swedish_ci Non
commentaire text latin1_swedish_ci Non
date date Non 0000-00-00
auteur varchar(30) latin1_swedish_ci Non
retenue int(3) Non 0
fait tinyint(1) Non 0
date_fait date Non 0000-00-00
Champ Type Interclassement Attributs Null Défaut Extra Action
id_eleve smallint(5) Non auto_increment
nom varchar(40) latin1_swedish_ci Non
groupe char(3) latin1_swedish_ci Non
telephone varchar(8) latin1_swedish_ci Non
responsable varchar(30) latin1_swedish_ci Non
etCREATE TABLE `liste_eleves` (
`id_eleve` smallint(5) NOT NULL auto_increment,
`nom` varchar(40) NOT NULL default '',
`groupe` char(3) NOT NULL default '',
`telephone` varchar(8) NOT NULL default '',
`responsable` varchar(30) NOT NULL default '',
`residence` tinyint(1) NOT NULL default '0',
`hockey` tinyint(1) NOT NULL default '0',
`badminton` tinyint(1) NOT NULL default '0',
`football` tinyint(1) NOT NULL default '0',
`photo` varchar(20) NOT NULL default '',
`casier` smallint(5) NOT NULL default '0',
`village` varchar(25) NOT NULL default '',
PRIMARY KEY (`id_eleve`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=302 ;
--
-- Contenu de la table `liste_eleves`
--
INSERT INTO `liste_eleves` (`id_eleve`, `nom`, `groupe`, `telephone`, `responsable`, `residence`, `hockey`, `badminton`, `football`, `photo`, `casier`, `village`) VALUES
(1, 'Côté, Scott', '91', '555-2222', 'Claire', 0, 0, 0, 0, '', 0, 'Mingan\r'),
(2, 'Beaudin, Denyse', '91', '555-2730', 'Cindy', 0, 0, 0, 0, '', 16, 'Riv.St-Jean\r'),
(3, 'Rosa, Rosie', '91', '555-2241', 'Claudine', 0, 0, 0, 0, '', 17, 'Havre-St-Pierre\r'),
(4, 'Cyr, Marie-Jeanne', '91', '555-3139', 'Martin', 0, 0, 0, 0, '', 18, 'Havre-St-Pierre\r');
Évidement j'ai trafiqué le tout pour concerver l'anonymat des gens!CREATE TABLE `rapports` (
`no` int(5) NOT NULL auto_increment,
`id_eleve` int(5) NOT NULL default '0',
`motif` varchar(30) NOT NULL default '',
`commentaire` text NOT NULL,
`date` date NOT NULL default '0000-00-00',
`auteur` varchar(30) NOT NULL default '',
`retenue` int(3) NOT NULL default '0',
`fait` tinyint(1) NOT NULL default '0',
`date_fait` date NOT NULL default '0000-00-00',
PRIMARY KEY (`no`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ;
--
-- Contenu de la table `rapports`
--
INSERT INTO `rapports` (`no`, `id_eleve`, `motif`, `commentaire`, `date`, `auteur`, `retenue`, `fait`, `date_fait`) VALUES
(7, 2, 'Quitter le terrain de l''école', '', '2007-08-28', 'pierre', 0, 0, '0000-00-00'),
(10, 1, 'Quitter le terrain de l''école', '', '2007-08-29', 'Carole', 0, 0, '0000-00-00'),
(11, 1, 'Quitter le terrain de l''école', '', '2007-08-29', 'Carole', 0, 0, '0000-00-00'),
(23, 3, 'Expulsion', ', '2007-08-30', 'martino', 30, 0, '0000-00-00'),
(25, 4, 'Retard', '', '2007-08-30', 'claudiac', 0, 0, '0000-00-00'),
(26, 3, 'Expulsion', '', '2007-08-30', 'paulp', 0, 0, '0000-00-00'),
(27, 3, 'Retard', '', '2007-08-30', 'pierres', 0, 0, '0000-00-00'),
(35, 1, 'Retard', '', '2007-08-31', 'stephaniem', 15, 0, '0000-00-00'),
(36, 4, 'Expulsion', '', '2007-08-31', 'claudiac', 15, 0, '0000-00-00'),
(31, 2, 'Expulsion', '', '2007-08-31', 'valerie', 0, 0, '0000-00-00');