У меня есть две таблицы, имеющие 1-к-многим: WorkOrder
1 - * Service
Как выполнить левое соединение при соединении поле равно нулю или 0
Они имеют отношение через поле: ServiceID
Из-за некоторые унаследованные причины, есть некоторые WorkOrder
не имеет Service
, но его ServiceID
поля сохраняются как 0
Теперь я хочу, чтобы выбрать все WorkOrders
тогда и только тогда
Существует согласующим Service
ИЛИ WorkOrder
«s ServiceID
= 0
Без ServiceID = 0
требование должно быть нормальное левое соединение:
var result = from wo in WorkOrderQuery
join j in JobQuery on ... // join some other tables
join s in ServiceQuery on wo.ServiceID equals s.ServiceID into gg
from g in gg.DefaultIfEmpty()
select new
{
ServiceCode = g == null? "" : g.Code,
WorkOrderID = wo.WorkOrderID,
};
Но я понятия не имею, когда это требование добавлено. Любые советы приветствуются.
Не можете ли вы просто обновить неправильные записи? Что-то вроде: 'update workorder set serviceid = null где serviceid = 0;' – Rumpelstinsk
Нет, я бы сделал это, если мог, но это корпоративное решение, что они должны оставаться неизменными. – shole
@shole - если у вас есть значение внешнего ключа, t действительно отображает фактическую запись в другой таблице -> это не внешний ключ ... –