我想下面的SQL語句轉換爲CAML查詢:多內部聯接CAML查詢
SELECT t.Id, t.Name, t.CustomerId
FROM Ticket AS t
INNER JOIN
Customer AS c1 ON t.CustomerEMail = c1.EMail
INNER JOIN
Customer AS c2 ON c1.CompanyNo = c2.CompanyNo
WHERE (c2.Email = '[email protected]')
使用CAMLJS,我走到這一步:(CompanyNo相當於Nav_CustomerNo)
var query = new CamlBuilder()
.View(["Title", ...])
.InnerJoin("ClientLookup", "c1")
.Select("EMail", "c1Email")
.InnerJoin("ClientLookup", "c2")
.Select("Nav_CustomerNo", "c2CompanyNo")
.Query()
.Where()
.All()
.ToString()
但我不知道如何從這裏開始。如何轉換
Customer AS c1 ON t.CustomerEMail = c1.EMail
line?我想是這樣的:。 。凡(「c1Email」)EqualTo(??
下面是對應的CAML:
<View>
<ViewFields>
<FieldRef Name="Title" />
<FieldRef Name="Ticket_MainBody" />
<FieldRef Name="Ticket_SupportID" />
<FieldRef Name="ClientLookup" />
<FieldRef Name="IsPrivateTicket" />
<FieldRef Name="Ticket_IsFAQ" />
</ViewFields>
<Joins>
<Join Type="INNER" ListAlias="c1">
<Eq>
<FieldRef Name="ClientLookup" RefType="ID" />
<FieldRef Name="ID" List="c1" />
</Eq>
</Join>
<Join Type="INNER" ListAlias="c2">
<Eq>
<FieldRef Name="ClientLookup" RefType="ID" />
<FieldRef Name="ID" List="c2" />
</Eq>
</Join>
</Joins>
<ProjectedFields>
<Field ShowField="EMail" Type="Lookup" Name="c1Email" List="c1" />
<Field ShowField="Nav_CustomerNo" Type="Lookup" Name="c2CompanyNo" List="c2" />
</ProjectedFields>
<Query>
<Where />
</Query>
</View>
順便說一句 - CamlJS不支持此嵌套接合,因爲它不請求或處理FieldRef式語句的第一部分的「列表=」屬性。 – skrile