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

Error al usar RIGHT JOIN

Estas en el tema de Error al usar RIGHT JOIN en el foro de SQL Server en Foros del Web. Hola a todos y les agradecere mucho la ayuda que me puedan dar, pues bueno yo tengo la siguiente interrogante, estoy modificando consultas, las cuales ...
  #1 (permalink)  
Antiguo 27/05/2013, 18:03
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Error al usar RIGHT JOIN

Hola a todos y les agradecere mucho la ayuda que me puedan dar, pues bueno yo tengo la siguiente interrogante, estoy modificando consultas, las cuales hacen un join utilizando "=*", pero yo las estoy cambiando de manera que ese simbolo se cambie por RIGHT JOIN como tal, para comprobar que la nueva consulta arroje los mismos datos, le pongo los mismos parametros tanto a una como a otra consulta, y los ejecuto, y resulta que la consulta a la que le he cambiado "=*" por la palabra RIGHT JOIN no arroja datos, mientras la original si muestra, a sabiendas que tengo los mismos parametros y en el RIGHT JOIN tengo los mismo campos que se usaban con el simbolo "=*", la duda que tengo es que si es posible que el RIGHT JOIN deje de funcionar? o el por que falla aun cuando le pongo los mismos parametros.?

Ojala me haya dado a entender y les doy de antemano las gracias
  #2 (permalink)  
Antiguo 27/05/2013, 19:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error al usar RIGHT JOIN

Te has dado a enteder perfectamente, lo extraño de todo es que no te funcione el RIGHT JOIN, ¿has intentado solamente con JOIN (sin el right)?, asumo que la union de los campos es correcta con ON CAMPO1 = CAMPO2
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 27/05/2013, 20:56
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Error al usar RIGHT JOIN

Hola iislas gracias por contestar si el campo estan bien hasta ahorita le he intentando con RIGHT JOIN con LEFT JOIN e INNER JOIN y tampoco me arroja datos lo que ya no probe fue solo el join
lo probare y comento que paso.

Gracias!!!!
  #4 (permalink)  
Antiguo 28/05/2013, 07:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error al usar RIGHT JOIN

estan bien los parametros que usas en tus joins? existen valores para el campo que hace la union entre las 2 tablas?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 28/05/2013, 10:32
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Error al usar RIGHT JOIN

Hola libras grax x comentar mm si los parámetros que uso son validos son correctos, y si si existen datos solo que algunos valores de los campos que necesito visualizar tienen datos nulos entonces no se si por ahí este afectando o la otra que pienso es que como también usa un rango de fecha le afecte pero si fuece eso la otra consulta no jalaria pero si mis parametros estan bien de echo como comentaba ya probe RIGHT JOIN LEFT JOIN INNER JOIN e incluso el JOIN solito pero no me treae nada :S
  #6 (permalink)  
Antiguo 28/05/2013, 10:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error al usar RIGHT JOIN

puedes poner tu query completo? y si se puede un pequeño ejemplo de tus datos?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 28/05/2013, 11:08
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Error al usar RIGHT JOIN

Si mira mi consulta original es esta:

Código SQL:
Ver original
  1. SELECT D.Art_id, D.Detalle_Cantidad, D.Detalle_Costo_Unitario , CASE isnull(O.Fecha_Desde,0) WHEN 0 THEN 0 ELSE 3 END Valor
  2.                        FROM   Orden_Loc_Detalle D WITH(NoLock) ,
  3.                               Com_Ofertas O WITH(Nolock)
  4.                        WHERE  D.Emp_id   = 1
  5.                        AND    D.Orden_id = 29279
  6.                        AND    D.Suc_id   = 2
  7.                        AND    D.Detalle_Envio_Prov = 'si'
  8.                        AND    O.Emp_id   =* D.Emp_id
  9.                        AND    O.Suc_id   =* D.Suc_id
  10.                        AND    O.Art_id   =* D.Art_id
  11.                        AND    O.Prov_id  = 316
  12.                        AND    CONVERT(VARCHAR(10),Getdate(),112)     BETWEEN
  13.                            CONVERT(VARCHAR(10),O.Fecha_Desde,112) AND
  14.                            CONVERT(VARCHAR(10),O.Fecha_Hasta,112)
  15.                       ORDER BY Valor

Entonces como pueden ver tengo asi "O.Emp_id =* D.Emp_id", lo que hice fue quitar el =* y poner RIGHT JOIN y quedo asi:

Código SQL:
Ver original
  1. SELECT D.Art_id, D.Detalle_Cantidad, D.Detalle_Costo_Unitario , CASE isnull(O.Fecha_Desde,0) WHEN 0 THEN 0 ELSE 3 END Valor
  2.                        FROM   Com_Ofertas  O WITH(Nolock)
  3.                        RIGHT OUTER JOIN Orden_Loc_Detalle D WITH(NoLock)
  4.                        ON O.Emp_id = D.Emp_id AND O.Suc_id = D.Suc_id AND O.Art_id = D.Art_id
  5.                        WHERE  D.Emp_id   = 1
  6.                        AND    D.Orden_id = 29279
  7.                        AND    D.Suc_id   = 2
  8.                        AND    D.Detalle_Envio_Prov = 'si'
  9.                        AND    O.Prov_id  = 316  
  10.                        AND    CONVERT(VARCHAR(10),Getdate(),112)     BETWEEN
  11.                            CONVERT(VARCHAR(10),O.Fecha_Desde,112) AND
  12.                            CONVERT(VARCHAR(10),O.Fecha_Hasta,112)
  13.                        ORDER BY Valor

Entonces como ven tengo los mismo parametros y todo similar, entonces cuando ejecuto la consulta original si me trae datos pero la que he modificado ya no, hasta he llegado a pensar que la original esta mal y por ende al actualizarla ya no trae nada
  #8 (permalink)  
Antiguo 28/05/2013, 11:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error al usar RIGHT JOIN

si usas la misma sentencia porque no haces esto:


Código SQL:
Ver original
  1. SELECT D.Art_id, D.Detalle_Cantidad, D.Detalle_Costo_Unitario , CASE isnull(O.Fecha_Desde,0) WHEN 0 THEN 0 ELSE 3 END Valor
  2.                        FROM   Orden_Loc_Detalle D WITH(Nolock)
  3.                        RIGHT OUTER JOIN Com_Ofertas  O WITH(NoLock)
  4.                        ON O.Emp_id = D.Emp_id AND O.Suc_id = D.Suc_id AND O.Art_id = D.Art_id
  5.                        WHERE  D.Emp_id   = 1
  6.                        AND    D.Orden_id = 29279
  7.                        AND    D.Suc_id   = 2
  8.                        AND    D.Detalle_Envio_Prov = 'si'
  9.                        AND    O.Prov_id  = 316  
  10.                        AND    CONVERT(VARCHAR(10),Getdate(),112)     BETWEEN
  11.                            CONVERT(VARCHAR(10),O.Fecha_Desde,112) AND
  12.                            CONVERT(VARCHAR(10),O.Fecha_Hasta,112)
  13.                        ORDER BY Valor

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 28/05/2013, 11:21
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Error al usar RIGHT JOIN

Ammm ya también lo intente asi pero me sigue sin mandar datos, no me queda mas que seguir probando y ver la causa
  #10 (permalink)  
Antiguo 28/05/2013, 11:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error al usar RIGHT JOIN

prueba el query linea por linea empieza con:

SELECT D.Art_id, D.Detalle_Cantidad, D.Detalle_Costo_Unitario , Case isnull(O.Fecha_Desde,0) When 0 then 0 else 3 end Valor
FROM Orden_Loc_Detalle D WITH(Nolock)
RIGHT OUTER JOIN Com_Ofertas O WITH(NoLock)
ON O.Emp_id = D.Emp_id AND O.Suc_id = D.Suc_id AND O.Art_id = D.Art_id

y le vas a agregando poco a poco los filtros para que veas donde esta que pierde los datos :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 28/05/2013, 11:31
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Error al usar RIGHT JOIN

sIP YA TAMBIEN ESTOY PROBANDO CON ELLO D ECHO SI YO SEPARO LOS CAMPOS DE LA TABLA "Orden_Loc_Detalle " EN UNA CONSULTA POR SEPARADO RESULTA QUE ME DA LA MISMA CANTIDAD DE DATOS QUE LA CONSULTA ORIGINAL PERO YA CUANDO LA COMBINO CON LA OTRA TABALA ES CUANDO YA NO ME ARROJA NADA
  #12 (permalink)  
Antiguo 30/05/2013, 09:33
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Error al usar RIGHT JOIN

Ps bueno despues de tantos tumbo consegui que la consulta me arrojara datos de la siguiente manera:

Código SQL:
Ver original
  1. SELECT D.Art_id, D.Detalle_Cantidad, D.Detalle_Costo_Unitario , CASE isnull(O.Fecha_Desde,0) WHEN 0 THEN 0 ELSE 3 END Valor
  2.                        FROM   Com_Ofertas  O WITH(Nolock)
  3.                        LEFT JOIN Orden_Loc_Detalle D WITH(NoLock)
  4.                        ON O.Emp_id = D.Emp_id AND O.Suc_id = D.Suc_id AND O.Art_id = D.Art_id
  5.                              AND    D.Detalle_Envio_Prov = 'si' AND    O.Prov_id  = 316  
  6.                        AND    CONVERT(VARCHAR(10),Getdate(),112)     BETWEEN
  7.                            CONVERT(VARCHAR(10),O.Fecha_Desde,112) AND
  8.                            CONVERT(VARCHAR(10),O.Fecha_Hasta,112)  
  9.                        WHERE  D.Emp_id   = 1
  10.                        AND    D.Orden_id = 29279
  11.                        AND    D.Suc_id   = 2                      
  12.                        ORDER BY Valor

Lo que me faltaba era para mi tabla Com_Ofertas agregar todas las condiciones que tubieran que ver con el y lo que tambien cambie fue el RIGHT por el LEFT para no cambiar de posición mis tablas y eso fue todo espero que alguien le pueda ayudar este caso.

Gracias y saludos

Etiquetas: campos, funcion, join, usar
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 07:20.