Ho due tabelle. indRailType
contiene un elenco dei nomi associati a un valore ID che utilizzo in altre tabelle per indicare il tipo di binario. WO_BreakerRail
contiene una colonna di data e una colonna di codice ferroviario che corrisponde allo stesso codice in indRailType
e alcuni altri dati. C'è una riga in WO_BreakerRail
per qualsiasi attività su ciascun tipo di binario, per ogni data. Quindi potrei avere 3 file datate per 3/19/2010
, ogni riga indica un codice ferroviario diverso e cosa è successo.LEFT OUTER JOIN con una clausola WHERE
Quando uso il seguente LEFT OUTER JOIN
, ottengo una tabella con tutti i tipi di binari, con valori null nelle righe in cui non è successo nulla il 19. Ora, funziona solo perché ho una sola data rappresentata nel mio tavolo WO_BreakerRail
in questo momento, il 19. Quando aggiungo più righe con date diverse, le cose andranno in tilt.
Questa è la mia dichiarazione di SQL, che in questo momento mi dà esattamente i risultati che voglio:
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
Ora, quando aggiungo in una clausola WHERE WO_BreakerRail.Date = @Date
perdo tutte le righe della JOIN
che non è successo niente. Non lo voglio Dalla lettura, sembra un FULL OUTER JOIN
è quello che voglio, ma SQL Server Compact Edition non supporta FULL OUTER JOIN
s. C'è un modo per aggirare questo, o sto cercando qualcos'altro interamente?
Non dimenticare di includere la porzione "time" di @Date. Se i valori possono variare tra mezzanotte e mezzanotte, è necessario utilizzare una qualche forma tra una clausola e l'altra. –
Questa risposta ha funzionato perfettamente, grazie. Filippo: Grazie per questo indicatore, anche se mi sono imbattuto in questo problema in precedenza in questo progetto che mi ha sconcertato per un po ', ma ho finito per fissarlo nel mio codice C#, la rimozione di tutte le porzioni di tempo, inadempiente ogni data a mezzanotte. – Wesley
@Wesley, è meglio "floor" tipi di dati datetime per rimuovere il tempo, quindi l'ora è 00: 00: 00.000 e non mezzanotte. –