這是我的LINQ查詢Linq查詢與LEFT JOIN有多個表
from row in (
from c in db.TabC
from cpd in db.TabPD
from slm in db.TabSLM
where cpd.SLid == slm.SLid
where c.Id == cpd.CID
where c.O_Id == 1
select new { c, cpd, slm })
group row in row.slm.SLType into g
select new
{
SLType = g.Key,
EStat = g.Count(r => r.c.EstatID != null),
Training = g.Count(r => r.cpd.TrId != null),
TrainingComplete =
g.Count(r => r.cpd.TrStat == 44),
AssessmentComplete =
g.Count(r => r.cpd.CndAssess == 44)
};
我需要一個左連接表db.TabSLM並且有在該表中獲得儘可能多的記錄。 TabC是一個主表,TabSLM也是。 TabPD具有引用TabC和TabSLM的詳細記錄。使用此查詢,當TabPD中沒有匹配的TabC rowid或TabSLM rowid時,我不會返回任何記錄。我想要的是返回TabSLM中存在的記錄數,因爲沒有匹配。有關如何修改此查詢的任何想法?
這裏是下面是每個最小領域的三個表的樣本數據中列出
TabC
ID O_ID Name
1 1 ABC
2 1 XYZ
3 1 RST
TabPD
RowID CID SLid
1 2 1
2 1 1
3 3 2
4 ...
TabSLM
SLid SLType
1 single level
2 Multi level
與查詢以上,我能夠得到記錄,其中TabC.O_ID == 1,但不是哪裏TabC.O_ID == 3,因爲TabC.O_ID沒有我還是想與其他列顯示爲0
感謝您的時間,以顯示與SLType ID == 3.任何記錄......
沒有工作。我在這裏仍然沒有記錄。 – user20358 2012-03-26 16:37:48
此外,「將row.slm.SLType中的行組合到g中」不起作用。 「將row.slm.SLType分組到g」中。 – user20358 2012-03-26 16:54:22
@ user20358 - 我稍微更新了查詢。沒有看到表* TabC *,* TabPD *,* TabSLM *我將無法知道預期的結果 – Aducci 2012-03-26 16:55:37