[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