
25/04/2008, 11:25
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 11 meses Puntos: 574 | |
Re: como puedo seleccionar la fila que mas se repita? jurena,
No es muy elegante pero funciona!!!
Código:
CREATE TABLE `vendes` (
`idvenda` int(11) NOT NULL auto_increment,
`idcampanya` int(11) NOT NULL,
`idproducte` int(11) NOT NULL,
PRIMARY KEY (`idvenda`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO vendes (idcampanya,idproducte) VALUES(1,1);
INSERT INTO vendes (idcampanya,idproducte) VALUES(1,1);
INSERT INTO vendes (idcampanya,idproducte) VALUES(1,1);
INSERT INTO vendes (idcampanya,idproducte) VALUES(1,2);
INSERT INTO vendes (idcampanya,idproducte) VALUES(1,3);
INSERT INTO vendes (idcampanya,idproducte) VALUES(2,2);
INSERT INTO vendes (idcampanya,idproducte) VALUES(2,2);
INSERT INTO vendes (idcampanya,idproducte) VALUES(2,2);
INSERT INTO vendes (idcampanya,idproducte) VALUES(2,1);
INSERT INTO vendes (idcampanya,idproducte) VALUES(2,3);
INSERT INTO vendes (idcampanya,idproducte) VALUES(3,3);
INSERT INTO vendes (idcampanya,idproducte) VALUES(3,3);
INSERT INTO vendes (idcampanya,idproducte) VALUES(3,3);
INSERT INTO vendes (idcampanya,idproducte) VALUES(3,2);
INSERT INTO vendes (idcampanya,idproducte) VALUES(3,1);
select sv.idcampanya,vp.idproducte,vp.vendes
from
(select v.idcampanya,max(v.vendes) as vendes
from
(select v1.idcampanya,v1.idproducte,count(*) as vendes
from vendes v1
group by v1.idcampanya, v1.idproducte
order by count(*)) v
group by idcampanya) sv
INNER JOIN
(select v2.idcampanya,v2.idproducte,count(*) as vendes
from vendes v2
group by v2.idcampanya, v2.idproducte) vp
on sv.idcampanya=vp.idcampanya and sv.vendes=vp.vendes;
Si en una campanya hay dos top ventas saldran los dos...
Creo recordar que en ORACLE se puede usar un campo de una subquerry como parametro de otra subquerry con lo que lo podriamos hacer mas elegante, pero en MySql no he encontrado la forma.
Con un solo SELECT creo que no se puede...
Quim |