Problema al mostrar la última publicación de usuarios en query

  • Autor Autor pa3lo022
  • Fecha de inicio Fecha de inicio
P

pa3lo022

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos, estoy trabado con una query que no debería ser tan difícil pero no puedo solucionarla.

Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, c.publicated
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
			WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC

Necesito agrupar los mismos iduser y que me muestre su ultima publicacion, esta query me devuelve un regitro pero me devuelve el primero y no el último.

Alguien me puede dar una mano porfa.

Muchas gracias
 
Creo, por la información que das, que te falta ordenar por la fecha de publicación para ver la última publicación. Puede que esto te funcione:

Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, c.publicated
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
            WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC[COLOR="#FF0000"], c.publicated DESC[/COLOR]
 
Prueba lo que dice astillazo y si no te funciona manda un print_r de la respuesta que obtienes para ver como tienes la estructura aunque deberia funciona ordenando por publicacion
 
Creo, por la información que das, que te falta ordenar por la fecha de publicación para ver la última publicación. Puede que esto te funcione:

Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, c.publicated
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
            WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC[COLOR="#FF0000"], c.publicated DESC[/COLOR]

Gracias por tu respuesta, lo hice así, bah en realidad lo ordene por idcolumna, pero el problema es que me trae todos los registros y yo solo necesito el ultimo, no se si me explico?
 
Gracias por tu respuesta, lo hice así, bah en realidad lo ordene por idcolumna, pero el problema es que me trae todos los registros y yo solo necesito el ultimo, no se si me explico?

Pues fácil entonces, según entiendo te trae una lista y solo quieres el primer registro de esa lista. Entonces sería lo siguiente:
Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, c.publicated
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
            WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC, c.publicated DESC
            [COLOR="#FF0000"]LIMIT 1[/COLOR]
 
Pues fácil entonces, según entiendo te trae una lista y solo quieres el primer registro de esa lista. Entonces sería lo siguiente:
Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, c.publicated
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
            WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC, c.publicated DESC
            [COLOR="#FF0000"]LIMIT 1[/COLOR]

Claro pero con el LIMIT 1 no me traeria el resto, es decir, por ejmplo tengo 5 usuario registrados y cada uno tiene 4 registros, yo quiero traer todos los usuario sin que se repitan pero solo con las ultimas publicaciones de cada uno.
 
Claro pero con el LIMIT 1 no me traeria el resto, es decir, por ejmplo tengo 5 usuario registrados y cada uno tiene 4 registros, yo quiero traer todos los usuario sin que se repitan pero solo con las ultimas publicaciones de cada uno.

Vale, ya porque soy un motivado :S creo que esta puede ser la solución (sin poder probarlo está pasable):
Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, [COLOR="#FF0000"]MAX(c.publicated)[/COLOR]
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
            WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC, c.publicated DESC
 
[MENTION=121971]pa3lo022[/MENTION] probaste esta última solución? te funcionó?

Vale, ya porque soy un motivado :S creo que esta puede ser la solución (sin poder probarlo está pasable):
Insertar CODE, HTML o PHP:
SELECT u.iduser, u.name, u.lastname, u.photo, c.idcolumna, c.title, c.active, [COLOR="#FF0000"]MAX(c.publicated)[/COLOR]
            FROM users u
            INNER JOIN columnistas c
            ON  u.iduser = c.userid            
            WHERE c.active = 1            
            GROUP BY u.iduser 
            ORDER BY c.idcolumna DESC, c.publicated DESC
 
[MENTION=121971]pa3lo022[/MENTION] probaste esta última solución? te funcionó?

Hola Perdon que no conteste si si, me funciono muy bien

muchisimas gracias por la ayuda
 
Atrás
Arriba