ArcObjects với Left Tham gia


8

Tôi đang mong đợi một mã ArcObjects tương đương với SQL bên trái tham gia.

Ví dụ: Tôi có dưới mã SQL, nó đơn giản tham gia để lấy các bản ghi từ cả hai bảng dựa trên ChecklistIdgiá trị.

SELECT  T1.ChecklistId, T1.ChecklistName, 
        T2.Latitude, T2.Longitude
FROM [dbo].[TableOne] T1 
INNER JOIN [dbo].[TableTwo] T2 ON T2.ChecklistId = T1.ChecklistId
WHERE T1.ChecklistId = @ChecklistId

Tôi đã chuyển đổi truy vấn SQL ở trên thành ArcObjects.

IQueryDef queryDef = featureWorkspace.CreateQueryDef();

queryDef.Tables = "TableOne, TableTwo";
queryDef.SubFields = "TableOne.ChecklistId, TableOne.ChecklistName, TableTwo.Latitude, TableTwo.Longitude";
queryDef.WhereClause = "TableOne.ChecklistId = '" + checklistId + "' AND TableOne.ChecklistId = TableTwo.ChecklistId";

ICursor cursor = queryDef.Evaluate();
IRow row = null;

while ((row  = cursor.NextRow()) != null)
{
    // ... get and set the values to the objects
}

Tôi muốn lấy các bản ghi ngay cả T1.ChecklistOwnercột có nullgiá trị. Nói một cách đơn giản, chúng ta có thể nói như SQL LEFT JOINnhư sau:

SELECT  T1.ChecklistId, T1.ChecklistName, 
        T2.Latitude, T2.Longitude,
        T3.FullName
FROM [dbo].[TableOne] T1 
INNER JOIN [dbo].[TableTwo] T2 ON T2.ChecklistId = T1.ChecklistId
LEFT JOIN [dbo].[TableThree] T3 ON T3.UserAlias = T1.ChecklistOwner
WHERE T1.ChecklistId = @ChecklistId

Làm cách nào tôi có thể chuyển đổi truy vấn SQL trên thành ArcObjects?

Câu trả lời:


1

Bạn có thể thực hiện nối trái bằng cách sử dụng thuộc tính "Bảng".

IQueryDef queryDef = ((IFeatureWorkspace)hoja.Workspace).CreateQueryDef();
queryDef.Tables = "User LEFT JOIN Country ON User.ID = Country.ID";
queryDef.SubFields = "User.ID, User.Name, Country.Name";

Hoạt động tốt với các kết nối trái, phải và bên trong, nhưng không biết làm thế nào để thực hiện tham gia đầy đủ.

Ngoài ra, bạn có thể sử dụng một số phép nối nhóm chúng với dấu ngoặc đơn.

queryDef.Tables = "((User INNER JOIN Country ON User.ID = Country.ID) LEFT JOIN C ON User.ID = C.ID)";
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.