Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Select SQL 2003 no funciona en SQL 2005

Estas en el tema de Select SQL 2003 no funciona en SQL 2005 en el foro de SQL Server en Foros del Web. Muy buenas, espero que alguien me pueda ayudar con este problema, tengo una select que hasta ahora ha funcionado perfectamente con SQL 2003, pero que ...
  #1 (permalink)  
Antiguo 25/04/2011, 05:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Select SQL 2003 no funciona en SQL 2005

Muy buenas, espero que alguien me pueda ayudar con este problema, tengo una select que hasta ahora ha funcionado perfectamente con SQL 2003, pero que ha dejado de funcionar cuando hemos migrado la base de datos a 2005, exactamente, me ha dejado de funcionar una parte de la where que tengo puesta.

En dicha select, tengo unas cinco tablas, donde por unos campos concretos tengo hechas los join, pero en luegar de hacer un Inner Join, pues hago una where con esos campos y funciona igual, salvo uno que tengo puesto de esta forma.

and VBAP.POSNR*=VBFA.POSNV

me da el siguiente error

The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80 or lower, using stored procedure sp_dbcmptlevel. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.

Si modifico mi select con Inner Join, Outer join, etc, no funciona bien y de hecho no saca el mismo resultado, para ser exactos, con la primera version, es decir, con la where *=, me da la select 444 datos como resultados y si lo modifico utilizando la claupsula LEFT JOIN, me da 20 filas como resultado.

Alguien sabe porque no funciona en 2005 lo de poner * a la derecha o izquierda de un igual.

Muchas gracias a todos y un saludo.

Última edición por s2s1r; 25/04/2011 a las 06:51
  #2 (permalink)  
Antiguo 25/04/2011, 07:39
 
Fecha de Ingreso: febrero-2008
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Select SQL 2003 no funciona en SQL 2005

Yo mismo he dado con la solución.

Consiste en utilizar los LEFT JOIN, teniendo en cuenta, que además de utilizar los campos claves, utilizaba en la calupsula WHERE otros filtros, pues para que me de el mismo resultado en el 2005 que me daba antes, solo hay que poner dentro del ON ademas de los campos clave de cada tabla, todo aquello que tenias en la WHERE que hiciera referencia a la segunda tabla, tamibién en el ON.

No se si me he explicado bien, pero os pongo un ejemplo.

Select campo1, campo2, campo3
FROM tabla1, tabla2
where tabla1.campo1*=tabla2.campo1 and tabla1.campo2 <> ''
and tabla2.campo2 = 8

ahora se pondría así

Select campo1, campo2, campo3
FROM tabla1 LEFT JOIN tabla2
ON tabla1.campo1 = tabla2.campo1 and tabla2.campo2 = 8
WHERE tabla1.campo2 <>''

Espero que se entienda y le sirva al que le haya pasado como a mi.

Un saludo.
  #3 (permalink)  
Antiguo 25/04/2011, 10:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Select SQL 2003 no funciona en SQL 2005

Claro que se entiende, aun conservo esa capacidad.

Si hubieras aplicado el UPGRADE ADVISOR, te hubiera reportado este tipo de situaciones.
__________________
MCTS Isaias Islas

Etiquetas: select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.