次のように、1 対 1 または 0 の関係で 2 つのテーブルがあるとします。
Invoice: ID, Date, OrderID
Order: ID, Date, Notes (string)
LINQtoSQL に関する限り、次のように INNER JOIN があります。
customer
.invoices
.OrderByDescending(i => i.Date)
.Join(context.Orders,
invoice => invoice.OrderID,
order => order.OrderID,
(invoice, order) => new
{
invoice = invoice,
OrderNotes = order.Notes
})
.ToList()
内部結合で除外されるすべての値は ですWHERE Invoice.OrderID NOT IN (SELECT OrderID FROM Order)
。どうなるかは確認していませんWHERE Invoice.OrderID IS NULL
必要なクエリは次のとおりです。
SELECT i.*, o.Notes AS OrderNotes
FROM
Invoice AS i
LEFT OUTER JOIN
Order AS o
ON i.OrderID = o.OrderID
fkを切り替える必要があることは理解していますが、DBの構造を変更する権限がありません。
LEFT OUTER JOIN 効果を生成する方法がわかりません。周りを見回すと、1対多のLEFT JOINの解決策しか見つかりませんでした。