[Php-avanzado] Consulta de conjuntos aplicada a SQL
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Mie Nov 25 16:39:41 ARST 2009
Hola Germán,
la solución al problema no es simple, y por tanto es posible que
obtengas una query compleja.
Si vas a usar UNION, más vale hacé UNION de todo y después filtrá, en
lugar de filtrar, hacer union y después volver a filtrar.
Por otra parte, yo lo pensaría haciendo relaciones con la tabla que
tiene todos los elmentos. Me pierde un poco que tengas la tabla N, la L
y después que digas que en la N tenés una referencia a la L... esto
quiere decir que el primer listado de la tabla N no está completo, y que
son 2 tablas pero que hablás como si fueran 3.
Si enviás las estructuras y el vuelco de algunos datos, sería más fácil
entender la situación.
Saludos!
El mié, 25-11-2009 a las 15:25 -0200, German Fernandez escribió:
> Tengo un problema:
>
> Dadas dos tablas con los siguientes elementos:
>
> Tabla N
> 1
> 2
> 3
> 4
> 5
>
> Tabla L
> A
> B
> C
> D
> E
>
> Agregando que en la tabla N tengo referencias a la tabla L de la
> siguiente manera:
>
> 1 - A
> 2 - B
> 3 - C
> 4 - A
>
> Lo q yo necesito, es realizar una consulta SQL que traiga como
> resultado los elementos de N con referencias a la tabla L, los
> elementos de N sin referencias a la tabla L ( hasta ahí con un LEFT o
> RIGTH JOIN no tendría problemas) y los valores de la tabla( e aquí el
> problema) L que no este referenciado en la tabla N.
> Es decir, según el ejemplo el resultado debería ser:
>
> 1 - A
> 2 - B
> 3 - C
> 4 - A
> NULL - E
> 5 - NULL
>
> La solución que encontré es hacer un LEFT JOIN y luego anexar los
> registros faltantes con un UNION y realizando la inversa, es decir con
> un RIGHT excluyendo los valores repetidos. Pero debido a que en el
> problema original las Tablas L y N son subconsultas, la consulta final
> se hace engorrosa de leer y muy grande. Por esto realizo la consulta,
> para saber si hay una operación de conjuntos que no sea con UNION.
>
> Desde ya muchas gracias German Fernadez
>
>
>
>
> ______________________________________________________________________
> ¡Revisá de un vistazo si tenés correos nuevos! Ingresá a tu Hotmail
> desde tu Messenger. ¡Probalo ahora!
> _______________________________________________
> 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