Error

18/05/2004 - 16:57 por Ezequiel | Informe spam
hola grupo, tengo este select, por ahi se hace complicado
verlo aca, pero si lo copian y lo pegan en otro lado se ve
mejor, el tema es que me da un error:
Server: Msg 301, Level 16, State 1, Line 1
Query contains an outer-join request that is not permitted.
no comprendo el porque, muchas gracias.

select *
from TPVENTAS..CUENTASCORRIENTES,
TPVENTAS..ITEMSCTACTE,
TPVENTAS..CLIENTES,
TPVENTAS..CONDICIONESPAGO,
TPVENTAS..CLASIFICACIONES,
TPVENTAS..CONCEPTOS,
TPVENTAS..VENDEDORES
where TPVENTAS..CUENTASCORRIENTES.CCS_RCD_MOVIMIENTO *=
TPVENTAS..ITEMSCTACTE.CCI_RCD_MOVIMIENTO
and TPVENTAS..CUENTASCORRIENTES.CCS_NRO_SUCURSAL *=
TPVENTAS..ITEMSCTACTE.CCI_NRO_SUCURSAL
and TPVENTAS..CUENTASCORRIENTES.CCS_NRO_MOVIMIENTO *=
TPVENTAS..ITEMSCTACTE.CCI_NRO_MOVIMIENTO
and TPVENTAS..CUENTASCORRIENTES.CCS_XCD_CUENTA *=
TPVENTAS..CLIENTES.CLI_XCD_CUENTA
and TPVENTAS..CUENTASCORRIENTES.CCS_CD5_CPAGO *=
TPVENTAS..CONDICIONESPAGO.PAG_CD5_CPAGO
and TPVENTAS..CUENTASCORRIENTES.CCS_COD_CLASIF *=
TPVENTAS..CLASIFICACIONES.CLA_COD_CLASIFICACION
and TPVENTAS..CUENTASCORRIENTES.CCS_CD5_VENDEDOR *=
TPVENTAS..VENDEDORES.VND_CD5_VENDEDOR
and TPVENTAS..ITEMSCTACTE.CCI_COD_CONCEPTO *=
TPVENTAS..CONCEPTOS.CPT_COD_CONCEPTO

Preguntas similare

Leer las respuestas

#1 Maxi
18/05/2004 - 17:55 | Informe spam
Hola, es que estas usando mal el Outer!! NO deberias usar con *= sino con
Join


select *
from TPVENTAS..CUENTASCORRIENTES left join
TPVENTAS..ITEMSCTACTE on
TPVENTAS..CUENTASCORRIENTES.CCS_RCD_MOVIMIENTO
= TPVENTAS..ITEMSCTACTE.CCI_RCD_MOVIMIENTO


y asi con el resto!!! probalo y me comentas ;-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Ezequiel" escribió en el mensaje
news:e9e001c43ce8$7149fcd0$
hola grupo, tengo este select, por ahi se hace complicado
verlo aca, pero si lo copian y lo pegan en otro lado se ve
mejor, el tema es que me da un error:
Server: Msg 301, Level 16, State 1, Line 1
Query contains an outer-join request that is not permitted.
no comprendo el porque, muchas gracias.

select *
from TPVENTAS..CUENTASCORRIENTES,
TPVENTAS..ITEMSCTACTE,
TPVENTAS..CLIENTES,
TPVENTAS..CONDICIONESPAGO,
TPVENTAS..CLASIFICACIONES,
TPVENTAS..CONCEPTOS,
TPVENTAS..VENDEDORES
where TPVENTAS..CUENTASCORRIENTES.CCS_RCD_MOVIMIENTO *> TPVENTAS..ITEMSCTACTE.CCI_RCD_MOVIMIENTO
and TPVENTAS..CUENTASCORRIENTES.CCS_NRO_SUCURSAL *> TPVENTAS..ITEMSCTACTE.CCI_NRO_SUCURSAL
and TPVENTAS..CUENTASCORRIENTES.CCS_NRO_MOVIMIENTO *> TPVENTAS..ITEMSCTACTE.CCI_NRO_MOVIMIENTO
and TPVENTAS..CUENTASCORRIENTES.CCS_XCD_CUENTA *> TPVENTAS..CLIENTES.CLI_XCD_CUENTA
and TPVENTAS..CUENTASCORRIENTES.CCS_CD5_CPAGO *> TPVENTAS..CONDICIONESPAGO.PAG_CD5_CPAGO
and TPVENTAS..CUENTASCORRIENTES.CCS_COD_CLASIF *> TPVENTAS..CLASIFICACIONES.CLA_COD_CLASIFICACION
and TPVENTAS..CUENTASCORRIENTES.CCS_CD5_VENDEDOR *> TPVENTAS..VENDEDORES.VND_CD5_VENDEDOR
and TPVENTAS..ITEMSCTACTE.CCI_COD_CONCEPTO *> TPVENTAS..CONCEPTOS.CPT_COD_CONCEPTO






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 04/05/2004
Respuesta Responder a este mensaje
#2 ulises
18/05/2004 - 19:33 | Informe spam
SQL Server todavía soporta la forma "antigua" de realizar
JOINs no es recomendado porque podría dar resultados no
esperados, en todo caso el problema que se presenta en el
SELECT es que, si mal no me acuerdo, esta forma de
especificación de join con *= no permite que una tabla que
ya está participando como "nulo" pueda participar en otra
condición del outer join, cosa que sucede con la tabla
ITEMSCTACTE, si retiras la condición :

and ITEMSCTACTE.CCI_COD_CONCEPTO *=
CONCEPTOS.CPT_COD_CONCEPTO

debería funcionar la sentencia, en todo caso tu sentencia
puede ser reemplazada por (sin probar):

SELECT *
FROM CUENTASCORRIENTES LEFT JOIN ITEMSCTACTE
ON ( CCS_RCD_MOVIMIENTO = CCI_RCD_MOVIMIENTO
and CCS_NRO_SUCURSAL = CCI_NRO_SUCURSAL
and CCS_NRO_MOVIMIENTO = CCI_NRO_MOVIMIENTO )
LEFT JOIN CLIENTES
ON ( CCS_XCD_CUENTA = CLI_XCD_CUENTA )
LEFT JOIN CONDICIONESPAGO
ON ( CCS_CD5_CPAGO = PAG_CD5_CPAGO )
LEFT JOIN CLASIFICACIONES
ON ( CCS_COD_CLASIF = CLA_COD_CLASIFICACION )
LEFT JOIN VENDEDORES
ON ( CCS_CD5_VENDEDOR = VND_CD5_VENDEDOR )
LEFT JOIN CONCEPTOS
ON ( CCI_COD_CONCEPTO = CPT_COD_CONCEPTO )

Saludos,
Ulises


Hola, es que estas usando mal el Outer!! NO deberias usar


con *= sino con
Join


select *
from TPVENTAS..CUENTASCORRIENTES left join
TPVENTAS..ITEMSCTACTE on
TPVENTAS..CUENTASCORRIENTES.CCS_RCD_MOVIMIENTO
= TPVENTAS..ITEMSCTACTE.CCI_RCD_MOVIMIENTO


y asi con el resto!!! probalo y me comentas ;-)

Respuesta Responder a este mensaje
#3 Maximiliano Damian Accotto
19/05/2004 - 00:29 | Informe spam
Como has dicho!! la soporta pero no la recomienda, que para mi es casi lo
mismo :p

Si esa consulta la transformas con Join funciona a la perfeccion, por lo
cual el soporte para *= no se hasta que punto es cierto, ademas deberian de
migran las consultas ya que no es para nada recomendado hacerlo asi.

Bye


Salu2

Maximiliano Damian Accotto
Gerente de IT
Fundicion San Cayetano S.A.
Buenos Aires Argentina
-
maxi_accotto[arroba]speedy[.]com[.].ar
MSN:



"ulises" escribió en el mensaje
news:eb3301c43cfe$2eac9ac0$
SQL Server todavía soporta la forma "antigua" de realizar
JOINs no es recomendado porque podría dar resultados no
esperados, en todo caso el problema que se presenta en el
SELECT es que, si mal no me acuerdo, esta forma de
especificación de join con *= no permite que una tabla que
ya está participando como "nulo" pueda participar en otra
condición del outer join, cosa que sucede con la tabla
ITEMSCTACTE, si retiras la condición :

and ITEMSCTACTE.CCI_COD_CONCEPTO * CONCEPTOS.CPT_COD_CONCEPTO

debería funcionar la sentencia, en todo caso tu sentencia
puede ser reemplazada por (sin probar):

SELECT *
FROM CUENTASCORRIENTES LEFT JOIN ITEMSCTACTE
ON ( CCS_RCD_MOVIMIENTO = CCI_RCD_MOVIMIENTO
and CCS_NRO_SUCURSAL = CCI_NRO_SUCURSAL
and CCS_NRO_MOVIMIENTO = CCI_NRO_MOVIMIENTO )
LEFT JOIN CLIENTES
ON ( CCS_XCD_CUENTA = CLI_XCD_CUENTA )
LEFT JOIN CONDICIONESPAGO
ON ( CCS_CD5_CPAGO = PAG_CD5_CPAGO )
LEFT JOIN CLASIFICACIONES
ON ( CCS_COD_CLASIF = CLA_COD_CLASIFICACION )
LEFT JOIN VENDEDORES
ON ( CCS_CD5_VENDEDOR = VND_CD5_VENDEDOR )
LEFT JOIN CONCEPTOS
ON ( CCI_COD_CONCEPTO = CPT_COD_CONCEPTO )

Saludos,
Ulises


Hola, es que estas usando mal el Outer!! NO deberias usar


con *= sino con
Join


select *
from TPVENTAS..CUENTASCORRIENTES left join
TPVENTAS..ITEMSCTACTE on
TPVENTAS..CUENTASCORRIENTES.CCS_RCD_MOVIMIENTO
= TPVENTAS..ITEMSCTACTE.CCI_RCD_MOVIMIENTO


y asi con el resto!!! probalo y me comentas ;-)

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida