34
Tôi có truy vấn này trong SQL và tôi muốn nó thực hiện trong LINQ sử dụng Entity Framework, nhưng làm cách nào tôi có thể áp dụng nhiều bảng bên ngoài các kết nối bên ngoài?LINQ to SQL nhiều bảng bên ngoài tham gia
SELECT d.bookingid,
d.labid,
d.processid,
p.prid,
p.prno,
d.DestinationBranchID,
d.SendStatus
FROM dc_tpatient_bookingd d
LEFT OUTER JOIN dc_tpatient_bookingm m ON d.bookingid = m.bookingid
LEFT OUTER JOIN dc_tpatient p ON p.prid = m.prid
LEFT OUTER JOIN dc_tp_test t ON d.testid = t.testid
LEFT OUTER JOIN dc_tp_groupm gm ON t.groupid = gm.groupid
LEFT OUTER JOIN dc_tpanel pn ON m.panelid = pn.panelid
LEFT OUTER JOIN dc_tp_organization og ON og.orgid = m.clientid
LEFT OUTER JOIN dc_tp_ward w ON w.wardid = m.wardid
LEFT OUTER JOIN dc_tp_branch tb ON tb.BranchID = m.BranchID
WHERE d.processid = 6
AND ((m.branchId = 1
AND d.DestinationBranchID = 0)
OR (d.DestinationBranchID = 1
AND d.sendstatus = 'R'))
AND d.testid IN (SELECT testid
FROM dc_tp_test
WHERE subdepartmentid = 13)
AND date_format(m.enteredon, '%Y/%m/%d') BETWEEN '2013/06/15' AND '2013/06/15'
GROUP BY m.bookingid
ORDER BY d.priority DESC,
m.bookingid ASC
cách xử lý ngày tháng? @lazyberezovsky –
@EhsanSajjad welcome :) Tôi vừa thử nghiệm truy vấn và tìm thấy một vấn đề - khi bạn tham gia bên ngoài bên trái, sau đó một số giá trị 'p, m' có thể là null. Nó là OK để chọn đơn giản, nhưng khi bạn đang làm nhóm, bạn có thể thấy một cái gì đó như 'null không thể được gán cho Int32'. Vì vậy, đây là cách giải quyết - khi chọn đối tượng ẩn danh làm 'prno = p == null? 0: p.prno'. Điều đó sẽ thực hiện thủ thuật –
@EhsanSajjad để xử lý việc sử dụng ngày tháng [EntityFunctions.TruncateTime Method] (http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.truncatetime.aspx) –