[Php-avanzado] Consulta entre dos tablas
Silverzero
silverzero.52 en gmail.com
Vie Oct 1 13:06:57 ART 2010
No te dije que "efecto" era: me repite la misma imagen para todas las
publicaciones listadas.
2010/10/1 Silverzero <silverzero.52 en gmail.com>
> No anda lo que se te habia ocurrido...eso me hace el mismo efecto que había
> hecho anteriormente con
>
> SELECT
> news.id,
> tit,
> cop,
> des,
> fecha,
> (SELECT ruta FROM data, news WHERE news.id=id_news
> LIMIT 0,1) as img
>
> FROM
> news
> LEFT JOIN
> data
> ON news.id = id_news AND tipo = 'img'
> ORDER by
> fecha DESC,
> id DESC
>
> Ya fué, lo dejo con GROUP BY, más adelante trataré de resolverlo, porque
> seguro en algun momento voy a necesitar listar algo con otro algo específico
> de un grupo en particular.
>
>
> 2010/10/1 Leonardo Tadei - Pegasus Tech Supply <
> leonardot en pegasusnet.com.ar>
>
>> 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
>>
>>
>> _______________________________________________
>> 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
>
--
Carolina Derromediz
Cel. +54 223 5301599
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20101001/1187cc64/attachment-0001.htm
Más información sobre la lista de distribución Php-avanzado