![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
No, ufffff, no tengo valores nulos .Ya había valorado esta opción, aunque la he vuelto a considerar.
Lo único que me retorna (pasando todos los parametros vacios, menos el del Contratos.ExeCon_Con = @ExeCon_sp) son aquellos contratos que tienen clientes y que estos clientes tienen teléfono, en el caso de no tener teléfono, no los muestra. Esto me está llevando a realizar diferentes consultas según los parametros que pase con valor además de que tablas necesite consultar, creciéndome exponencialmente las consultas a razón de las combinaciones de todas las tablas relacionadas con los contratos o alguna tabla esclava de estos. Por ejemplo, si quiero que la consulta me retorne todos los contratos con cliente independientemente del número de teléfono, es decir, tenga teléfono con cualquier número o no tenga teléfono ese determinado cliente del contrato, escribo la misma consulta pero sin el INNER JOIN de relación con el contrato: ... FROM Contratos LEFT OUTER JOIN Clientes ON Clientes.CodAut_Cli = Contratos.CodCli_Con en lugar de: ... FROM Contratos LEFT OUTER JOIN Clientes LEFT OUTER JOIN TelefonosCli ON TelefonosCli.CodCli_TelCli = Clientes.CodAut_Cli ON Clientes.CodAut_Cli = Contratos.CodCli_Con En fin... No veas el lio y el curro combinacinal que tengo.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
|
#2
|
||||
|
||||
|
Que tal.
Veo un grave problema de concepto por aqui. Estas mandando pedir todos los contratos, tengan o no cliente, pero luego filtras aquellos cuya dirección (del cliente) sea similar a x. Si no hay cliente, ¿cómo su dirección podría ser similar a algo? Otro asunto es la versión de sqlserver que estas utilizando, puesto que antes del 2000, si no mal recuerdo, el comportamiento con los filtros y los encuentros externos era erratico, pues el motor filtraría registros que si pasan por el where con que solo se referenciara la tabla externa en dicha clausula. Lo dejaré hasta alli, pues no he leido toda la consulta, principalmente por no estar publicada con la etiqueta [ sql ], que facilitaría en mucho su rápida comprensión, y porque después de un par de años por aqui, me parece imprescindible que la uses. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
||||
|
||||
|
Hola, antes de nada agradecerte tu interés. Disculpa por no ponerlo como [code] o [sql], no conocía la etiqueta. Y no son dos años por aquí, son más lo que ocurre es que perdí la antiguedad al darme de alta de nuevo cuando cambió la página del foro.
Veamos. Con respecto a lo que me comentas en tu observación: Estas mandando pedir todos los contratos, tengan o no cliente, pero luego filtras aquellos cuya dirección (del cliente) sea similar a x. Si no hay cliente, ¿cómo su dirección podría ser similar a algo? Si es cierto que quiero todos los contratos, independientemente de si tiene cliente o si teniendo cliente independientemente de si este a su vez tiene teléfono etc. Pero, ¿de eso no se encarga precisamente el LEFT INNER JOIN?, de retornar todos los contratos tengan o no cliente o todos los clientes con contrato tengan o no teléfono, y si lo tienen aplicarles las clausulas WHERE? Por cierto y retomando lo de las etiquetas, ¿como puedo incluir el texto coloreado en verde como una cita de tu anterior respuesta?. Gracias a todos.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
|
#4
|
||||
|
||||
|
Arriba Barςa!!
__________________
Héctor Geraldino Software Engineer |
|
#5
|
||||
|
||||
|
Cita:
O bien a traves de las etiquetas Quote. Ejemplo [quote=minombre].......[/QUOTE.. No he cerrado el último corchete o sino no me aparece nada, pero al momento de citar si debes hacerlo!!. Hasta Luego -
__________________
No todo es como parece ser... |
|
#6
|
||||
|
||||
|
Cita:
.Efectivamente, el left outer join se encarga de traer todos los contratos, independientemente de si tienen cliente o no. Podes comprobarlo quitando de la clausula where todo lo que haga referencia a campos de la tabla cliente o teléfono. El problema se da precisamente cuando NO hay un cliente, pues tu clausula where se encarga de filtrar TODOS estos registros, pues no prevee ninguna condición que los deje pasar. Dado que el left join devolverá null para todos los campos de la tabla cliente cuando no exista un registro asociado a esta, lo usual es incluir en el where los correspondientes "or's" para que deje "pasar" estos registros, algo como:
Esto devolverá todas las facturas para clientes con apellido CASTILLO de la ciudad de guatemala y todas aquellas que no tengan asociado un cliente. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#7
|
||||
|
||||
|
Hola, gracias por todo. Voy a probrarlo, pero no entiendo porque de :
Cita:
Ya digo en que he quedado.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
|
#8
|
||||
|
||||
|
Correcto.
Pero por la propia idiosincrasia de los resultados que busco aún así me veo obligado a la combinatoria de LEFT OUTER JOIN con unas tablas o no. Gracias por vuestra ayuda, colaboración e interes. Força.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|