[Php-avanzado] Consulta entre dos tablas

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Vie Oct 1 10:01:19 ART 2010


Entonces, una subquery con la forma:

SELECT
             news.id,
             tit,
             cop,
             des,
             fecha,
             ruta as img
         FROM
             news
         LEFT JOIN
             data
         ON  news.id = (SELECT id_news FROM data WHERE news.id=id_news
LIMIT 0,1)
		AND tipo = 'img'
         ORDER by
             fecha DESC,
             id DESC

	Es decir, hacés el LEFT JOIN relacionando news.id con el resultado de
una query que te devuelve solo un registro de data.
	Puede ser que haga falta usar algún alias para desambiguar algún campo,
pero la idea es esa...

El vie, 01-10-2010 a las 09:01 -0300, Silverzero escribió:
> Si, DISTINCT tambien lo había probado pero no me funcionó... :/
> 
> 2010/10/1 Leonardo Tadei - Pegasus Tech Supply
> <leonardot en pegasusnet.com.ar>
>         Ahhh!!!
>         
>         Entonces, sacale el LIMIT que te había dicho, y comenzá la
>         query con
>         SELECT DISTINCT ...
>         
>                Sin embargo, tal vez esto no funcione porque en
>         realidad las filas no
>         estarán repetidas cuando haya distintas imágenes... probalo y
>         contanos,
>         y si no vamos a tener que armar una subquery que devuelva solo
>         un
>         registro por cada noticia.
>         
>         El vie, 01-10-2010 a las 08:38 -0300, Silverzero escribió:
>         
>         > Si, pero en ese caso me lista una noticia sola, no?.
>         > Yo quiero un listado completo de noticias por página, en
>         donde cada
>         > noticia se muestra con ninguna (si no tuviese) o sólo una
>         imagen, para
>         > que luego se pueda seleccionar una y ver todo el contenido
>         completo.
>         >
>         > 2010/10/1 Leonardo Tadei - Pegasus Tech Supply
>         > <leonardot en pegasusnet.com.ar>
>         >         Hola Carolina,
>         >
>         >                si solo querías la primer imagen, tu 1er
>         query estaba
>         >         bien, solo que al
>         >         final tenías que agregarle un LIMIT 0,1
>         >
>         >                El LIMIT es a toda la query...
>         >
>         >         El vie, 01-10-2010 a las 07:30 -0300, Silverzero
>         escribió:
>         >
>         >         > No, solo una. Porque es para el listado de todas
>         las
>         >         noticias, y
>         >         > queria que se mostrara cada una con una imagen de
>         todas las
>         >         que
>         >         > tuviera asociadas (hubiera sido ideal la de menor
>         ID).
>         >         >
>         >         > 2010/10/1 Leonardo Tadei - Pegasus Tech Supply
>         >         > <leonardot en pegasusnet.com.ar>
>         >         >         Pero esa query no te devuelve todas las
>         imágenes...
>         >         no te
>         >         >         hacían falta
>         >         >         todas???
>         >         >
>         >         >         El vie, 01-10-2010 a las 00:24 -0300,
>         Silverzero
>         >         escribió:
>         >         >
>         >         >         > Hola Leo,
>         >         >         >
>         >         >         > Gracias por la respuesta.
>         >         >         > Lo arreglé así:
>         >         >         >
>         >         >         >     $qry="SELECT
>         >         >         >             news.id,
>         >         >         >             tit,
>         >         >         >             cop,
>         >         >         >             des,
>         >         >         >             fecha,
>         >         >         >             ruta as img
>         >         >         >         FROM
>         >         >         >             news
>         >         >         >         LEFT JOIN
>         >         >         >             data
>         >         >         >         ON
>         >         >         >             news.id = id_news AND tipo =
>         'img'
>         >         >         >         GROUP BY
>         >         >         >             news.id
>         >         >         >         ORDER by
>         >         >         >             fecha DESC,
>         >         >         >             id DESC";
>         >         >         >
>         >         >         > Lo único es que me elige una imagen a
>         criterio
>         >         desconocido,
>         >         >         pero me da
>         >         >         > la impresión que es una con el id
>         intermedio
>         >         porque nunca es
>         >         >         la mayor
>         >         >         > ni la menor.
>         >         >         >
>         >         >         > 2010/9/30 Leonardo Tadei - Pegasus Tech
>         Supply
>         >         >         > <leonardot en pegasusnet.com.ar>
>         >         >         >         Hola Carolina,
>         >         >         >
>         >         >         >         El jue, 30-09-2010 a las 21:07
>         -0300,
>         >         Silverzero
>         >         >         escribió:
>         >         >         >         > Hola tengo un problema con una
>         consulta
>         >         a dos
>         >         >         tablas (que
>         >         >         >         seguro es
>         >         >         >         > una pavada y yo no la veo), en
>         una tengo
>         >         noticias
>         >         >         y en otra
>         >         >         >         guardo
>         >         >         >         > archivos, videos e imagenes de
>         cada
>         >         noticia, que
>         >         >         pueden ser,
>         >         >         >         ninguna o
>         >         >         >         > más de una.
>         >         >         >         > Cuando listo las noticias
>         quiero que se
>         >         vea UNA de
>         >         >         las fotos
>         >         >         >         (la de ID
>         >         >         >         > menor), titulo, fecha,
>         >         copete/desarrollo. Pero
>         >         >         cuando una
>         >         >         >         noticia
>         >         >         >         > tiene más de una imagen me
>         lista la
>         >         noticia
>         >         >         repetida tantas
>         >         >         >         veces como
>         >         >         >         > imágenes haya asociadas.
>         >         >         >
>         >         >         >
>         >         >         >                Esto está bien, y es como
>         se espera
>         >         que
>         >         >         funcione una
>         >         >         >         query: creciendo
>         >         >         >         "para abajo" con tantos
>         registros como
>         >         datos tenga
>         >         >         la
>         >         >         >         respuesta.
>         >         >         >                Por lo que planteás, es
>         como que
>         >         esperás que
>         >         >         la
>         >         >         >         respuesta "se más
>         >         >         >         ancha", es decir, tenga más
>         columnas, pero
>         >         nunca vas
>         >         >         a tener
>         >         >         >         más
>         >         >         >         columnas que las que estés
>         proyectando.
>         >         >         >
>         >         >         >                La solución a aplicar es
>         >         programática: en la
>         >         >         primer
>         >         >         >         iteración de la
>         >         >         >         query, rescatá los datos de
>         News, y de la
>         >         1ra y las
>         >         >         >         siguientes, usá solo
>         >         >         >         los datos proyectados de Data.
>         >         >         >
>         >         >         >
>         >         >         >         > Mi consulta original es
>         >         >         >         >
>         >         >         >         >     $qry="SELECT
>         >         >         >         >             news.id,
>         >         >         >         >             tit,
>         >         >         >         >             cop,
>         >         >         >         >             des,
>         >         >         >         >             fecha,
>         >         >         >         >             ruta as img
>         >         >         >         >         FROM
>         >         >         >         >             news
>         >         >         >         >         LEFT JOIN
>         >         >         >         >             data
>         >         >         >         >         ON
>         >         >         >         >             news.id = id_news
>         AND tipo =
>         >         'img'
>         >         >         >         >         ORDER by
>         >         >         >         >             fecha DESC,
>         >         >         >         >             id DESC";
>         >         >         >         >
>         >         >         >         > Había probado hacer una
>         consulta anidada
>         >         en
>         >         >         reemplazo de
>         >         >         >         ruta as img,
>         >         >         >         > por SELECT ruta FROM news,
>         data WHERE
>         >         news.id =
>         >         >         id_news AND
>         >         >         >         tipo =
>         >         >         >         > 'img' LIMIT 0,1, para que me
>         devuelva
>         >         una sola,
>         >         >         pero se me
>         >         >         >         repite la
>         >         >         >         > misma imagen en cada
>         noticia...
>         >         >         >         >
>         >         >         >         > Gracias
>         >         >         >
>         >         >         >
>         >         >         >                Por nada!
>         >         >         >                (si se entiende)
>         >
>         >         >
>         >         --
>         >
>         >         Leonardo Tadei
>         >         leonardot en pegasusnet.com.ar
>         >         http://blog.pegasusnet.com.ar
>         >         Firma pública:
>         >
>         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>         >
>         >         _______________________________________________
>         >         Php-avanzado mailing list
>         >         Php-avanzado en pato2.fi.mdp.edu.ar
>         >
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         >
>         >
>         >
>         >
>         > --
>         > Carolina Derromediz
>         > Cel. +54 223 5301599
>         > _______________________________________________
>         > Php-avanzado mailing list
>         > Php-avanzado en pato2.fi.mdp.edu.ar
>         >
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         --
>         
>         Leonardo Tadei
>         leonardot en pegasusnet.com.ar
>         http://blog.pegasusnet.com.ar
>         Firma pública:
>         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>         
>         _______________________________________________
>         Php-avanzado mailing list
>         Php-avanzado en pato2.fi.mdp.edu.ar
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         
> 
> 
> 
> -- 
> Carolina Derromediz
> Cel. +54 223 5301599
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
-- 


Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
http://www.prometeustech.com.ar / http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
                



Más información sobre la lista de distribución Php-avanzado