У меня есть две таблицы. indRailType
содержит список имен в сочетании со значением идентификатора, который я использую в других таблицах для указания типа рейки. WO_BreakerRail
содержит столбец даты и столбец кода железной дороги, который соответствует тому же коду в indRailType
и некоторым другим данным. В WO_BreakerRail
есть строка для любого вида деятельности для каждого типа рельсов, для каждой даты. Таким образом, у меня может быть 3 строки, датированные 3/19/2010
, каждая строка указывает свой код железной дороги и что произошло.
Когда я использую следующее LEFT OUTER JOIN
, я получаю таблицу со всеми типами рельсов с нулями в строках, где 19-го ничего не произошло. Теперь, это работает только потому, что у меня только одна дата, представленная в моей таблице WO_BreakerRail
прямо сейчас, 19-го числа. Когда я добавлю больше строк с разными датами, все пойдет не так.
Это мой оператор SQL, который сейчас дает мне именно те результаты, которые я хочу:
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
Теперь, когда я добавляю предложение WHERE WO_BreakerRail.Date = @Date
, я теряю все строки в JOIN
, с которыми ничего не произошло. Я не хочу этого Из чтения это звучит так, как будто я хочу, чтобы ПОЛНЫЙ OUTER JOIN
, но SQL Server Compact Edition не поддерживает FULL OUTER JOIN
с. Есть ли способ обойти это, или я ищу что-то совсем другое?