[Php-avanzado] Consulta entre dos tablas
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Oct 1 17:00:48 ART 2010
Carolina,
El vie, 01-10-2010 a las 13:06 -0300, Silverzero escribió:
> No te dije que "efecto" era: me repite la misma imagen para todas las
> publicaciones listadas.
Entonces falta algún alias para desambiguar un campo de la query
respecto de la subquery...
De veras, mandá la estructura de las 2 tablas y un par de datos de
pruebas y lo vemos!
> 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
> _______________________________________________
> 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
Más información sobre la lista de distribución Php-avanzado