Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/04/2008, 11:25
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
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