Tengo dos tablas. indRailType
contiene una lista de nombres emparejados con un valor de ID que utilizo en otras tablas para indicar el tipo de raíl. WO_BreakerRail
contiene una columna de fecha y una columna de código de carril que corresponde al mismo código en indRailType
y algunos otros datos. Hay una fila en WO_BreakerRail
para cualquier actividad en cada tipo de riel, para cada fecha. Así que podría tener 3 filas fechadas para 3/19/2010
, cada fila indica un código de ferrocarril diferente, y lo que sucedió.JUNTA EXTERIOR IZQUIERDA con una cláusula WHERE
Cuando uso el siguiente LEFT OUTER JOIN
, obtengo una tabla con todos los tipos de rieles, con nulos en las filas donde nada ocurrió el día 19. Ahora, esto solo funciona porque solo tengo una fecha representada en mi tabla WO_BreakerRail
en este momento, el día 19. Cuando agregue más filas con diferentes fechas, las cosas se pondrán feas.
Esta es mi declaración SQL, que en este momento me da exactamente los resultados que quiero:
SELECT WO_BreakerRail.ID, indRailType.RailType, WO_BreakerRail.CreatedPieces,
WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged,
WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop
FROM indRailType
LEFT OUTER JOIN WO_BreakerRail
ON indRailType.RailCode = WO_BreakerRail.RailCode
Ahora, cuando agrego en una cláusula WHERE WO_BreakerRail.Date = @Date
pierdo todas las filas de la JOIN
el que no pasó nada. No quiero eso. Desde la lectura, suena como que es LO QUE QUIERO es OUTER JOIN
COMPLETO, pero SQL Server Compact Edition no es compatible con FULL OUTER JOIN
s. ¿Hay alguna forma de evitar esto o estoy buscando algo completamente distinto?
No olvide incluir la porción de "tiempo" de @Date. Si los valores pueden variar entre la medianoche y la medianoche, tendrá que usar alguna forma de cláusula between. –
Esta respuesta funcionó perfectamente, gracias. Philip: Gracias por ese puntero, aunque me encontré con ese problema anteriormente en este proyecto que me dejó perplejo por un tiempo, pero terminé solucionándolo en mi código C#, eliminando todas las partes del tiempo, predeterminando cada fecha hasta la medianoche. – Wesley
@Wesley, lo mejor es "plantar" los tipos de datos de fecha y hora para eliminar el tiempo, por lo que la hora es 00: 00: 00.000 y no la medianoche. –