Un Select "complicado"
He intentado de varias formas realizar una consulta y aun no logro realizarla satisfactoriamente.
Tengo una tabla de noticias que entre otras cosas tiene un:
id,titulo,categoria,fecha_registro
Otro tabla de categorias que tiene:
id_cat,nombre_categoria
Planteamiento del problema:
- No se cuantas categorias tengo (pueden ser 3,4,8...n)
- Quiero obtener de la tabla noticias, UNICAMENTE las tres ultimas noticias registradas de cada categoria.
TIPS:
Es algo asi como generar primero una consulta de la categoria 1 ordenada por fecha descendiente y pidiendo el limite 3.
SELECT * FROM noticias WHERE categoria = '1' ORDER BY fecha DESC LIMIT 3;
Luego con la siguiente categoria 2 ordenada por fecha y pidiendo el limite 3.
SELECT * FROM noticias WHERE categoria = '2' ORDER BY fecha DESC LIMIT 3;
Y asi sucesivamente.....
¿Eso como se hace en una sola consulta?
Gracias
Tengo una tabla de noticias que entre otras cosas tiene un:
id,titulo,categoria,fecha_registro
Otro tabla de categorias que tiene:
id_cat,nombre_categoria
Planteamiento del problema:
- No se cuantas categorias tengo (pueden ser 3,4,8...n)
- Quiero obtener de la tabla noticias, UNICAMENTE las tres ultimas noticias registradas de cada categoria.
TIPS:
Es algo asi como generar primero una consulta de la categoria 1 ordenada por fecha descendiente y pidiendo el limite 3.
SELECT * FROM noticias WHERE categoria = '1' ORDER BY fecha DESC LIMIT 3;
Luego con la siguiente categoria 2 ordenada por fecha y pidiendo el limite 3.
SELECT * FROM noticias WHERE categoria = '2' ORDER BY fecha DESC LIMIT 3;
Y asi sucesivamente.....
¿Eso como se hace en una sola consulta?
Gracias
hola
es facil, primero, si en tu tabla de noticias el kampo categoria es el id de la categoria en tu tabla categorias, entonces tienes ke hacer lo siguiente
un select id_cat from categorias
y el resultado meterlo en un arreglo
kon el while (($fila=mysql_fetch_array($Resultado)))
ahora tienes en tu arreglo $fila el id de kada categoria
entonces realizas tu konsulta para obtener las noticia
pasandole komo parametro el id y listo
todo esto dentro del while
bueno es lo ke yo entiendo ke kieres hacer
si tienes alguna duda mandame un mail a [email protected]
suerte
ciao
es facil, primero, si en tu tabla de noticias el kampo categoria es el id de la categoria en tu tabla categorias, entonces tienes ke hacer lo siguiente
un select id_cat from categorias
y el resultado meterlo en un arreglo
kon el while (($fila=mysql_fetch_array($Resultado)))
ahora tienes en tu arreglo $fila el id de kada categoria
entonces realizas tu konsulta para obtener las noticia
pasandole komo parametro el id y listo
todo esto dentro del while
bueno es lo ke yo entiendo ke kieres hacer
si tienes alguna duda mandame un mail a [email protected]
suerte
ciao
No no no no... quiero la consulta directa en mysql un
SELECT * bla bla bla
Que solo me presente esos resultados..
En php se como hacer eso, con un "for" es mas sencillo que con un while...
Pero quiero la consulta MySQL que me presente nada mas esos resultados sin usar PHP.
No es capricho, solo que lo que tu indicas requiere generar 1 consulta para obtener los id de las categorias luego una consulta por cada categoria en la tabla noticias.. y pues imaginate que tengas 100 categorias tendrias que ejecutar 100 consultas en la tabla noticias.., y si tienes 300 visitas a la pagina??? 100 x 300 = 30,000 consultas wow es mucho... en cambio si lo haces en una sola consulta en lugar de 30 mil nada mas tendrias que hacer 300 consultas...
Anoche probando logre con Max() obtener la ultima noticia de cada categoria
select id,categoria,max(fecha) from noticias group by categoria;
Pero requiero las tres ultimas noticias de cada categoria.
Agradezco tu apoyo espero dar con el resultado.
VoKyE
SELECT * bla bla bla
Que solo me presente esos resultados..
En php se como hacer eso, con un "for" es mas sencillo que con un while...
Pero quiero la consulta MySQL que me presente nada mas esos resultados sin usar PHP.
No es capricho, solo que lo que tu indicas requiere generar 1 consulta para obtener los id de las categorias luego una consulta por cada categoria en la tabla noticias.. y pues imaginate que tengas 100 categorias tendrias que ejecutar 100 consultas en la tabla noticias.., y si tienes 300 visitas a la pagina??? 100 x 300 = 30,000 consultas wow es mucho... en cambio si lo haces en una sola consulta en lugar de 30 mil nada mas tendrias que hacer 300 consultas...
Anoche probando logre con Max() obtener la ultima noticia de cada categoria
select id,categoria,max(fecha) from noticias group by categoria;
Pero requiero las tres ultimas noticias de cada categoria.
Agradezco tu apoyo espero dar con el resultado.
VoKyE
