[Php-avanzado] Feliz consulta mysql!

Silverzero silverzero.52 en gmail.com
Mar Ene 4 11:13:15 ARST 2011


Hola Matías!!

Gracias por la explicación, ahora me queda super clarísimo!

Felicidades!!!
Carolina.

2011/1/3 Matias Gea <matigea en gmail.com>:
> Hola, Carolina.
>
> Felicidades a vos tambien!
>
> Y felicitaciones por la consulta.
>
> Te explico cual era tu problema.
> La cláusula ON se utiliza para decirle al motor por dónde querés que
> una las tablas. Más especificamente, indica las condiciones con las
> cuales se unen dos tablas, pero según como esté formada, puede ser o
> no ser condicional de la consulta.
>
> En tu caso, la tabla la tenías unida con LEFT JOIN, entonces, aunque
> no encuentraba concordancia en la segunda tabla, te traía todos los
> resultados igual (con ruta en NULL, calculo). Si hubieses unido sólo
> con JOIN, el resultado hubiese sido probablemente el que buscabas.
>
> Igualmente, de la forma que lo escribiste es mucho más claro, más
> mantenible, ya que diferencias las condiciones de la unión de las
> condiciones generales de la consulta. Así es más simple agregar tablas
> y hacer más compleja la consulta (si tenés que hacerlo algún día).
>
> También quedaría mucho más legible saber de qué tablas vienen todos
> campos que usas, para lo que podés usar alias de tablas, por ejemplo:
>
> $qry="SELECT e.id AS id, e.fecha, e.titulo, e.copete, e.descripcion,
> ea.ruta AS img
>           FROM entradas AS e
>          LEFT JOIN entradas_attch AS ea
>           ON e.id=ea.id_entrada AND ea.tipo='img'
>           WHERE e.seccion='$seccion' AND e.stat=1
>           GROUP BY e.id";
>
>
> Saludos!
>
>
> El 1 de enero de 2011 17:54, Silverzero <silverzero.52 en gmail.com> escribió:
>>
>> Hola  a todos!
>>
>> Primero que nada, felicidades para todos y que todos sus deseas lleguen a concretarse en este nuevo ciclo, según el Papa Gregorio XIII.
>> Aunque mejor podríamos haber estado celebrando la edad de la tierra, entre unos 4400-5100 millones de años...o la aparición del Homo Sapiens hace unos 2,5 millones de años...o celebrar el comienzo de la civilización humana a partir de la existencia de los Sumerios, por lo que estaríamos festejando un año entre 6500 y 6700.
>> Bueno, pero más allá de eso, este mensaje tiene su origen en una consulta mysql que en este primer día del 2011 pude realizar y quería compartirla (aunque pueda ser bastante fácil yo no la había cazado che, me costó bastante)...siempre hay una consulta que te complica y esta fue una de esas...tal vez a alguien le sirve.
>>
>> tengo una tabla donde se insertan publicaciones: (id, titulo, copete, descripcion, estado, seccion)
>> tengo otro tabla con los adjuntos de las publicaciones: (id, id_entrada, tipo de adjunto, ruta)
>>
>> yo quería filtrar todas las publicaciones de la seccion "noticias" que tuvieran o no un archivo adjunto de tipo imagen.
>>
>> mi primera consulta fue:
>>
>> $qry="SELECT entradas.id AS id, fecha, titulo, copete, descripcion, ruta AS img
>>           FROM  entradas LEFT JOIN entradas_attch
>>           ON entradas.id=id_entrada AND tipo='img' AND seccion='noticias' AND stat=1
>>           GROUP BY entradas.id";
>>
>> pero esto me listaba todas las publicaciones, tengan o no imágenes y sean o no de la sección noticias...
>> yo pense que con la claúsula ON filtraba los resultados correspondientes a la relación de las dos tablas y las de cada una en particular, pero parece que no, así que necesito agregar una cláusula WHERE para filtrar los campos de la tabla "entradas", con lo que me queda algo así.
>>
>> $qry="SELECT entradas.id AS id,fecha, titulo, copete, descripcion, ruta AS img
>>           FROM entradas LEFT JOIN entradas_attch
>>           ON entradas.id=id_entrada AND tipo='img'
>>           WHERE seccion='$seccion' AND stat=1
>>           GROUP BY entradas.id";
>>
>> Y ahí me anduvo bien!!!
>> Espero que a alguien le sirva!
>>
>> Saludos y buenas ondas para esta nueva vuelta al sol!
>> --
>> Carolina
>>
>> _______________________________________________
>> Php-avanzado mailing list
>> Php-avanzado en pato2.fi.mdp.edu.ar
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
>
>
> --
> Matias Fernando Gea
> matigea en gmail.com
> http://www.mfgea.com.ar
> _______________________________________________
> 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


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