Ver Mensaje Individual
  #14 (permalink)  
Antiguo 09/01/2009, 13:34
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Tener X resultados pero para cada...

Sebassebas,

no pueden compararse las opciones, pero creo que el problema es el uso de limit en MySQL en subconsultas. Desde luego en MySQL 6 mejorará algo, pero no sé si permitirá hacer lo que quieres.
De todas formas, te haré otra propuesta. Esta con una sola consulta, pero usando el GROUP_CONCAT ordenando y luego mediante un substring_index, recortando el número del limit
tipo es texto: sería el departamento;
id sería el id de usuario. Hay que hacer un cast a char pues group_concat solo devuelve cadena y el campo id que puse es un número. Si se trata de un campo de texto puedes quitar el cast... as char. Separo con una coma y con substrin_index luego me quedo con los que están entre comas hasta un número, tras haberlos ordenado descendente. Busco en IN los departamentos que quiera (es tu array). Lo que obtengo son líneas con los cinco en orden descendente de cada departamento. Si hay menos, me trae los que haya, y si en el departamento no hay ninguno, lo descarta. Es un poco chapuza, pero se trata de una sola consulta. Luego las cadenas separadas por coma las podrás trabajar perfectamente en PHP. Realmente es sólo un experimento mío.

SELECT tipo, substring_index(GROUP_concat( cast( id AS char ) ORDER BY ID DESC
SEPARATOR ','),',',5) dato
FROM `tabla`
WHERE tipo
IN (
'A', 'B'
) group by tipo having count(*) > 0

Última edición por jurena; 10/01/2009 a las 07:02