Error en una BD y en otra no!!!
Publicado por leon (12 intervenciones) el 30/07/2007 23:46:37
Hola a todos, tengo una consulta en sql2005 que me hace un JOIN entre dos tablas y lista los módulos con los permisos que tiene un rol, y luego lo ordeno por uno de los campos, la consulta es:
-------------------------------------------------------------------------
select nCodigoModulo, sNombre, 0 as nCrear, 0 as nModificar, 0 as nEliminar, 0 as nConsultar
from tbModulos where nCodigoModulo not in (select distinct nCodigoModulo
from tbModulosRole where nCodigoRole= 1 )
union
select m.nCodigoModulo,m.sNombre
,mr.nCrear, mr.nModificar, mr.nEliminar, mr.nConsultar
from tbModulos m inner Join tbModulosRole mr On m.nCodigoModulo=mr.nCodigoModulo
where mr.nCodigoRole= 1
Order By m.nCodigoModulo
-------------------------------------------------------------------------
esta consulta me saca el siguiente error:
-------------------------------------------------------------------------
Mens. 4104, Nivel 16, Estado 1, Línea 1
The multi-part identifier "m.nCodigoModulo" could not be bound.
Mens. 104, Nivel 16, Estado 1, Línea 1
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
-------------------------------------------------------------------------
El error se corrige quitando el alias de la tabla en la clausula ORDER ó poniendo un alias al campo, es decir, para el primer caso el ORDER quedaría asi: Order By nCodigoModulo.
El problema está en que yo ejecuto esta consulta en la bd de producción (con el Order By m.nCodigoModulo) y me saca el error que pongo arriba, PERO, ejecuto la misma consulta (con el Order By m.nCodigoModulo) en la bd de pruebas que esta en el mismo servidor y no saca el error.... :(
Si alguien sabe el por que éste error sale en una bd y en otra no se los agradecería demasiado....
PD: las tablas tienen la misma estructura, las mismas relaciones, etc.
-------------------------------------------------------------------------
select nCodigoModulo, sNombre, 0 as nCrear, 0 as nModificar, 0 as nEliminar, 0 as nConsultar
from tbModulos where nCodigoModulo not in (select distinct nCodigoModulo
from tbModulosRole where nCodigoRole= 1 )
union
select m.nCodigoModulo,m.sNombre
,mr.nCrear, mr.nModificar, mr.nEliminar, mr.nConsultar
from tbModulos m inner Join tbModulosRole mr On m.nCodigoModulo=mr.nCodigoModulo
where mr.nCodigoRole= 1
Order By m.nCodigoModulo
-------------------------------------------------------------------------
esta consulta me saca el siguiente error:
-------------------------------------------------------------------------
Mens. 4104, Nivel 16, Estado 1, Línea 1
The multi-part identifier "m.nCodigoModulo" could not be bound.
Mens. 104, Nivel 16, Estado 1, Línea 1
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
-------------------------------------------------------------------------
El error se corrige quitando el alias de la tabla en la clausula ORDER ó poniendo un alias al campo, es decir, para el primer caso el ORDER quedaría asi: Order By nCodigoModulo.
El problema está en que yo ejecuto esta consulta en la bd de producción (con el Order By m.nCodigoModulo) y me saca el error que pongo arriba, PERO, ejecuto la misma consulta (con el Order By m.nCodigoModulo) en la bd de pruebas que esta en el mismo servidor y no saca el error.... :(
Si alguien sabe el por que éste error sale en una bd y en otra no se los agradecería demasiado....
PD: las tablas tienen la misma estructura, las mismas relaciones, etc.
Valora esta pregunta


0