2012-08-10 18 views
6

Sprawdziłem tutaj artykuły i wyszukiwałem je, dopóki nie będę niebieski na palcach. Czytałem, czytałem i czytałem i po prostu nie mogę otoczyć głowy łączeniem CAML w Sharepoint2010.Jak pracować CAML Łączy jak połączenia SQL?

Pytanie: może ktoś proszę pokazać mi pełną przykład jak dokładnie CAML Dołącz do SQL Query porównuje Dołącz kwerendy?

*For Example (SQL of Course, just something to work with)* 

If I had a Database named "whatever" & it contained two tables. 
We'll name these "tableA" & "tableB", respectively. 

Let's say they look like this: 

- tableA - 
ID | Column1 | Column2 | Column3 

- tableB - 
ID | Column4 | Column5 | Column6 

SELECT tableA.Column1, tableA.Column2, tableB.Column4 
FROM tableA 
INNER JOIN tableB ON tableA.ID = tableB.ID 

Would give me something like: 

- newTable - 
Column1 | Column2 | Column4 
result | result | result 
result | result | result 
result | result | result 

Więc znowu, moje pytanie brzmi, czy mogę dostać dokładny przykładem tego samym operacji jest inacted w SharePoint 2010 przy użyciu dołącza ciąg zapytań Caml?

Odpowiedz

11

Utwórz zapytanie na jednej z list.

SPList list = SPContext.Current.Site.RootWeb.Lists["TableA"]; 
SPQuery query = new SPQuery(); 

Aby wykonać dołączyć ustaw query.Joins do

<Join Type="INNER" ListAlias="TableB"> 
    <Eq> 
     <FieldRef Name="TableA" RefType="ID" /> 
     <FieldRef List="TableB" Name="ID" /> 
    </Eq> 
</Join> 

i query.ProjectedFields do

<Field Name="TableBColumn4" Type="Lookup" List="TableB" ShowField="Column4"> 

Aby wybrać pola do wyświetlacza ustawionej query.ViewFields do

<FieldRef Name="Column1"> 
    <FieldRef Name="Column2"> 
    <FieldRef Name="TableBColumn4">  

Następnie

SPListItemCollection result = tablea.GetItems(query); 

czy coś takiego (to z pamięci!)

+1

To naprawdę pomaga od tego trochę więcej. Testowanie rzeczy na razie. Dziękuję Ci. – SpYk3HH

+2

Daj mi znać, jeśli popełniłem jakieś straszliwe błędy :) – podiluska

+4

Tęskniłeś za jedną ważną rzeczą, możesz dołączyć tylko na polach wyszukiwania. –

5

Moja frustracja lusterka Ciebie, oto kilka wskazówek:

  1. Uruchom kwerendę opartą na stole dziecko w związek. (Nie potrafię odróżnić od twojego przykładu, który byłby rodzicem i którego dziecko.)

  2. Zgadzam się z Robem Windsor, że musi to być oparte na polach odnośnika, ale z moich testów musi to być odnośnik do Pole typu ListItemID. W SharePoint jest to wewnętrzne pole ID. (Wiem o tym, ponieważ mam odnośnik do pola tekstowego, a to po prostu nie działa. Zmarnowane godziny życia.) Obecnie mam post na forach Microsoft z pytaniem, czy parametr RefType może być czymś innym niż "ID" ", więc może mieć na to oko. Na koniec, jeśli w wyświetlanych polach parametr Type musi zawsze być "lookup", to dlaczego jest potrzebny?

  3. Żaden z konstruktorów zapytań CAML (YACQB i U2U) nie obsługuje dołączeń, więc nie przejmuj się pobieraniem i próbowaniem.