El o los usuarios que mas partidos acierten en una fecha (o jornada), ganan esa fecha. Para encontrar los ganadores de cada fecha, itero entre 1 y ULTIMA_FECHA y para cada fecha, hago esta consulta:
Código:
Donde $fecha varia entre 1 y 19 (esta fecha no es DATE)SELECT user.id, COUNT( * ) AS aciertos FROM `prode` , `user` , `match` WHERE match.id = prode.match_id AND match.resultado = prode.prode_result AND user.id = prode.user_id AND match.torneo LIKE 'Clausura 10' AND match.fecha = '$fecha' GROUP BY user.username HAVING COUNT( * ) = ( SELECT MAX( aciertos2 ) FROM ( SELECT COUNT( * ) AS aciertos2 FROM `prode` , `match` WHERE `match`.id = `prode`.match_id AND `match`.resultado = `prode`.prode_result AND `match`.torneo LIKE 'Clausura 10' AND `match`.fecha = '$fecha' GROUP BY user_id ) AS tablaAux ) ORDER BY ACIERTOS DESC , user.username
Estas son las tablas:
Código:
Estoy buscando la forma de reemplazar el ciclo para iterar entre las fechas, y tener una sola consulta que me devuelva una tabla con los usuarios y cuantas fechas gano cada uno.-- -- Table structure for table `match` -- CREATE TABLE `match` ( `id` int(11) NOT NULL AUTO_INCREMENT, `local` varchar(30) NOT NULL DEFAULT '', `visitante` varchar(30) NOT NULL DEFAULT '', `resultado` varchar(40) DEFAULT NULL, `torneo` varchar(40) NOT NULL DEFAULT 'Apertura 08', `fecha` int(11) NOT NULL DEFAULT '0', `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), UNIQUE KEY `local` (`local`,`torneo`,`fecha`), UNIQUE KEY `visitante` (`visitante`,`torneo`,`fecha`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Table structure for table `prode` -- CREATE TABLE IF NOT EXISTS `prode` ( `prode_id` int(11) NOT NULL AUTO_INCREMENT, `match_id` int(11) NOT NULL DEFAULT '0', `user_id` int(11) NOT NULL DEFAULT '0', `prode_result` varchar(30) NOT NULL DEFAULT '', `prode_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`prode_id`), UNIQUE KEY `torneo` (`torneo`,`match_id`,`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Alguna idea?