entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Subconsulta en la misma tabla para sacar el valor de una columna en concreto

Muy buenas,
Espero puedan ayudarme en esta consulta, yo esta consulta se hacerla haciendo dos peticiones separadas, pero me gustaria hacerla en una. Explico mi problema:

Tengo una consulta tal que asi:

$cadena="select  mensajes.* ,usuarios.*
        from mensajes 
        inner join usuarios on mensajes.id_autor= usuarios.id
        where 
        mensajes.es_comentario=0
        group by mensajes.id order by mensajes.id desc limit 3";

En la misma tabla mensajes tengo un id_original que se relaciona con otro mensaje que saca el mensaje original, lo que quiero de ese mensaje original es sacar el el valor de columna enlace. Es decir en la consulta anterior la columna mensajes.id_original tiene un id que se relaciona con otro mensaje que tiene un id=id_original y de hay sacar la fila enlace.

Como podría sacarlo?

Gracias

2 Respuestas

1voto

chiqui3d Puntos510

Hola @Leonardo-Tadei
AL final lo he conseguido, siempre lo he tenido delante y nunca he sabido aprovecharlo.
Con la siguiente consulta:

$consulta="mc.enlace as enlace_original,m.*,u.* from mensajes m inner join usuarios on m.id_autor=u.id inner join mensajes mc on m.id_original=mc.id where m.comentario=0 group by m.id order by m.id desc limit 2"
$rs=mysql_query($consulta) or die ($consulta);
while ($fila = mysql_fetch_array($rs)){
        echo $fila['enlace_original'];
    }

Gracias por todo no se si ahi alguna manera mejor, pero lo he conseguido.

0voto

Leonardo-Tadei comentado

Me alegra!

Marcá tu propia respueta como "la mejor" así el tema queda solucionado.
Saludos!

2votos

Leonardo-Tadei Puntos227020

Hola Chiqui3D,

me parece que no se puede hacer lo que querés y obtener datos útiles con esa query. Estás agrupando por mensajes.id, con lo que habrá varios mensajes en el agrupamiento, y por tanto de obtener el campo "enlace" obtendrías uno de ellos y no los concordantes con mensaje.id únicamente...

Podríamos ver de reformular la query para no agrupar de esta manera. Envíanos la estructura de las tablas involucradas y la lista de campos de cada tabla que querés proyectar, para ver de rearmarla sin la limitación del GROUP BY.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta