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

Nulls inexistentes

Estas en el tema de Nulls inexistentes en el foro de SQL Server en Foros del Web. Tengo la siguiente vista Cita: SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER VIEW dbo.ViConsultaChecadasFincas AS SELECT TOP 100 PERCENT ISNULL(M4_HIST_CENTROS_TRABAJO.ID_CENTRO_TRABAJO, dbo.TbRelojes.FINCA) AS Finca, ...
  #1 (permalink)  
Antiguo 15/07/2008, 10:25
 
Fecha de Ingreso: julio-2008
Mensajes: 26
Antigüedad: 15 años, 10 meses
Puntos: 0
Nulls inexistentes

Tengo la siguiente vista
Cita:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER VIEW dbo.ViConsultaChecadasFincas
AS
SELECT TOP 100 PERCENT
ISNULL(M4_HIST_CENTROS_TRABAJO.ID_CENTRO_TRABAJO, dbo.TbRelojes.FINCA) AS Finca,
ISNULL(M4_FASES_ALTA.ID_EMPLEADO, 'NO ENCONTRADO') AS ID_EMPLEADO,
ISNULL(M4T_EMPLEADOS.APELLIDO_1 + ' ' + M4T_EMPLEADOS.APELLIDO_2 + ' ' + M4T_EMPLEADOS.NOMBRE, 'NO EN META4') AS Nombre,
ISNULL(RIGHT(M4_FASES_ALTA.ID_EMPLEADO, 5), 'NO') AS CredM4,
CONVERT(DATETIME, LEFT(dbo.TbHandPunch.FechaChecada, 4) + '-' + SUBSTRING(dbo.TbHandPunch.FechaChecada, 5, 2) + '-' + RIGHT(dbo.TbHandPunch.FechaChecada, 2), 102) AS Fecha,
CONVERT(DATETIME, '1899-12-30 '+LEFT(dbo.TbHandPunch.HoraChecada, 2) + ':' + SUBSTRING(dbo.TbHandPunch.HoraChecada, 3, 2) + ':' + RIGHT(dbo.TbHandPunch.HoraChecada, 2), 102) AS Hora,
dbo.TbHandPunch.Terminal,
dbo.TbRelojes.Desc_Reloj AS Terminal_Desc,
dbo.TbHandPunch.Credencial,
M4_FASES_ALTA.FEC_BAJA,
DATEPART(WEEKDAY, CONVERT(DATETIME, LEFT(dbo.TbHandPunch.FechaChecada, 4) + '-' + SUBSTRING(dbo.TbHandPunch.FechaChecada, 5, 2) + '-' + RIGHT(dbo.TbHandPunch.FechaChecada, 2), 102)) AS DIASEMANA
FROM
dbo.TbRelojes
RIGHT OUTER JOIN
dbo.TbHandPunch
ON
dbo.TbRelojes.Cod_Reloj = dbo.TbHandPunch.Terminal
LEFT OUTER JOIN
emind.dbo.M4_FASES_ALTA M4_FASES_ALTA
INNER JOIN
emind.dbo.M4T_EMPLEADOS M4T_EMPLEADOS
ON
M4_FASES_ALTA.ID_SOCIEDAD = M4T_EMPLEADOS.ID_SOCIEDAD
AND
M4_FASES_ALTA.ID_EMPLEADO = M4T_EMPLEADOS.ID_EMPLEADO
INNER JOIN
emind.dbo.M4_HIST_CENTROS_TRABAJO M4_HIST_CENTROS_TRABAJO
ON
M4T_EMPLEADOS.ID_SOCIEDAD = M4_HIST_CENTROS_TRABAJO.ID_SOCIEDAD
AND
M4T_EMPLEADOS.ID_EMPLEADO = M4_HIST_CENTROS_TRABAJO.ID_EMPLEADO
AND
M4_FASES_ALTA.FEC_ALTA_EMPLEADO = M4_HIST_CENTROS_TRABAJO.FEC_ALTA_EMPLEADO
ON
dbo.TbRelojes.FINCA COLLATE SQL_Latin1_General_CP1_CI_AS = M4_HIST_CENTROS_TRABAJO.ID_CENTRO_TRABAJO
AND
dbo.TbHandPunch.Credencial COLLATE SQL_Latin1_General_CP1_CI_AS = RIGHT(M4_FASES_ALTA.ID_EMPLEADO_OLD, 5)

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
En las columnas: ID_EMPLEADO, Nombre y CredM4 hay valores null lo cual debería ser imposible puesto que son llaves primarias, checando directamente las tablas donde se extrae la información no hay valores null pero en este select se crean cuando no deberían, llevo 3 días trabajando en ello y no doy con la respuesta. ayuda!!!
Cita:
FINCA ID_EMPLEADO Nombre CredM4 Fecha Hora
TXC NO ENCONTR NO EN META4 NO 2007-05-18 00:00:00.000 1899-12-30 10:21:36.000
TXC NO ENCONTR NO EN META4 NO 2007-05-18 00:00:00.000 1899-12-30 10:21:54.000
TXC 4996 Quintero Hernandez Javier 4996 2007-05-18 00:00:00.000 1899-12-30 07:42:58.000
TXC NO ENCONTR NO EN META4 NO 2007-05-18 00:00:00.000 1899-12-30 07:43:14.000
TXC 4996 Quintero Hernandez Javier 4996 2007-05-18 00:00:00.000 1899-12-30 07:44:08.000
  #2 (permalink)  
Antiguo 15/07/2008, 10:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Nulls inexistentes

¿Porque dices que se CREAN?, en la vista aparecen como NULL?, o bien se substituye el valor por algun valor fijo
  #3 (permalink)  
Antiguo 15/07/2008, 15:25
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: Nulls inexistentes

Que tal.

Tu consulta es correcta. Lo que sucede es que estas usando instrucciones RIGHT OUTER JOIN y LEFT OUTER JOIN y seguramente no hay coincidencias del registro de llave primaria en la tabla refenciada, es decir, la llave foranea.

Caso más concreto, la parte donde unes tu consulta con
Código:
LEFT OUTER JOIN
emind.dbo.M4_FASES_ALTA M4_FASES_ALTA
y despuúes tratas de ver el valor del campo en:
Código:
ISNULL(M4_FASES_ALTA.ID_EMPLEADO, 'NO ENCONTRADO') AS ID_EMPLEADO,
Estoy seguro de no hay relación entre esas dos tablas y por lo tanto hay un nulo.

Al parecer usaste un asistente para generar tu vista, trata de hacerla tu mismo para que te quede más ordenado el código y sepas muy bien por donde moverle como en este caso.

Saludos !
  #4 (permalink)  
Antiguo 04/08/2008, 12:49
 
Fecha de Ingreso: julio-2008
Mensajes: 26
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Nulls inexistentes

El punto: los usuarios registraban mal el codigo por eso no se podían encontrar, y corregí la vista, donde solo agarrara los id_empleados que si existieran y los otros no recibirán paga jajajaja.
La mayoría era error de los usuarios por no registrar bien
Gracias.
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 11:26.