2017-01-27 7 views
0

Sharepointを数日間使用するだけで、この質問は何度も尋ねられましたが、私はそれらのすべてを試してみましたが、どれもうまくいきません。CAMLクエリを使用して共有ポイントで2つのリストを結合する

これらのドキュメントライブラリタイプとして

  • 文書が外部キーを持って、私のデザイン同上

    Id | DocumentName 
    ---+------------- 
    1 | Document A 
    2 | Document B 
    
  • 活動一覧きているドキュメントID

    への言及を 'DOCID'
    Id | DocId | Name 
    ---+-------+----------- 
    1 | 1  | Activity A 
    2 | 1  | Activity B 
    3 | 1  | Activity C 
    4 | 2  | Activity D 
    

問題文書の文書名を含むすべてのアクティビティを取得する必要があります。

SQLでは、Joinクエリを使用して別のテーブルから追加情報を取得できます。しかし、私はCAMLクエリでいくつかのJoinステートメントを試してみましたが、どれも動作しません。 ここに私が得なければならない結果があります。

Id | DocId | Name  | DocumentName 
---+-------+-------------------------- 
1 | 1  | Activity A | Document A 
2 | 1  | Activity B | Document A 
3 | 1  | Activity C | Document A 
4 | 2  | Activity D | Document B 

私に質問をお聞かせください。

は、ここに私のクエリです:

<View> 
    <ViewFields> 
    <FieldRef Name = 'DocLeafRef'/> 
    <FieldRef Name = 'ID'/> 
    <FieldRef Name = 'e8_document'/> 
    <FieldRef Name = 'Title'/> 
    <FieldRef Name = 'Author'/> 
    <FieldRef Name = 'Created'/> 
    </ViewFields> 
    <Joins> 
    <Join Type = 'INNER' ListAlias = 'Documents'> 
     <Eq> 
     <FieldRef Name ='e8_document' RefType = 'Id'/> 
     <FieldRef Name ='ID' List ='Documents'/> 
     </Eq> 
    </Join> 
    </Joins> 
    <ProjectedFields> 
    <Field ShowField ='FileLeafRef' Type ='Lookup' Name ='DocLeafRef' List ='Documents'/> 
    </ProjectedFields> 
    <Query> 
    <Where> 
     <Eq> 
      <FieldRef Name='e8_caseId'></FieldRef> 
      <Value Type = 'Number'>23</Value> 
     </Eq> 
    </Where> 
    </Query> 
</View> 

私は活動リスト上のクエリだとe8_documentは、ドキュメント内のIDへの参照ルックアップフィールドです。私が理解しているとおり、投影が必要で、投影を追加しましたが、クエリでエラーが発生します。

+0

上記の結果が得られたCAMLクエリを投稿できますか?次に、[リストの結合と投影](https://msdn.microsoft.com/en-us/library/office/ee539975%28v=office.14%29.aspx?f=255&MSPPError)を使用して修正する方法を教えてください。 = -2147217396)。 – Thriggle

+0

@Thriggle質問を追加します。 –

答えて

0

Query要素が無効な場合は、基本的にはQuery要素に子要素としてJoinsを含めることができませんでした。

サーバー側オブジェクトモデル

SPQuery ClassJoins elementニーズがSPQuery.Joins Propertyを介して指定されるためには:ここでは

var qry = new SPQuery(); 
qry.Joins = @"<Join Type="LEFT" ListAlias="Documents"> 
      <Eq> 
       <FieldRef Name="DocId" RefType="ID" /> 
       <FieldRef Name="ID" List="Documents" /> 
      </Eq> 
     </Join>"; 

クライアントサイドオブジェクトモデル

のための完全なCAMLクエリですCSOM API

<View> 
    <ViewFields> 
     <FieldRef Name="ID" /> 
     <FieldRef Name="DocId" /> 
     <FieldRef Name="Name" /> 
     <FieldRef Name="Documents" /> 
    </ViewFields> 
    <Joins> 
     <Join Type="LEFT" ListAlias="Documents"> 
      <Eq> 
       <FieldRef Name="DocId" RefType="ID" /> 
       <FieldRef Name="ID" List="Documents" /> 
      </Eq> 
     </Join> 
    </Joins> 
    <ProjectedFields> 
     <Field ShowField="DocumentName" Type="Lookup" Name="Documents" List="Documents" /> 
    </ProjectedFields> 
    <Query /> 
</View> 
+0

こんにちは私はあなたのクエリを適用するが、私はSharePointクライアントからエラーを取得する:1つ以上のフィールドの種類が正しくインストールされていません。これらのフィールドを削除するには、リスト設定ページに移動します。私のクエリで何か問題がありますか –

+0

私の2番目の例では、Lookupフィールドの名前はDocIdです。例を挙げれば、おそらくe8_documentに置き換える必要があります.ViewFields要素に2つ、Join要素にもう1つあります。 –

+0

もう1つの問題は、のクエリとして、FileLeafRefが "File"タイプの外部リストにあり、 "値が期待範囲内に収まらない"というエラーが発生します。ファイルによってこのエラーが発生するのは長いか、ファイルタイプは別の方法が必要です –

関連する問題