Skip to main content

Step by Step SPQuery List joins


SharePoint 2010 Step by Step SPQuery List joins Using CAML

I am using the example following example lists
  1. CustomerCity List
  2. Customer

List Columns 
CustomerCity columns are:

Tilte
Single Line text

Customer columns are:

Title
Single Line text
City
Lookup type of CustomerCity

Dummy Data used

For CustomerCity
Title
City1     
City2     
City3

For Customer
Title
City
Customer1
City1
Customer2
City1
Customer3
City2
Customer4
City2
customer5
City2
Customer6  
<NULL>

Using the Join in SharePoint 2010 List Using SPQuery Class.
We need to set the three most important properties for that.
  1. Joins
  2. ProjectedFields
  3. ViewFields


SharePoint 2010 adds Join To CAML SPQuery.Joins
Types of joins
  1. Inner
  2. Left

Requested Lookup columns
Projections allow inclusion of fields joined lists
SPQeury.ProjectedFields

Joins: Each join is represented by a Join element child of the Joins element. Only inner and left outer joins are permitted. Moreover, the field in the primary list must be a Lookup type field that looks up to the field in the foreign list. There can be joins to multiple lists, multiple joins to the same list, and chains of joins. If a given list is the foreign list in more than one join, it must have distinct aliases assigned to it by the ListAliasattributes of the Join elements representing the joins.
 Note: Multiple Lines of text, Choice type columns are not supported in ProjectedFields.


private void button1_Click(object sender, EventArgs e)
        {
            string siteUrl = "http://home";
            SPWeb _web = new SPSite(siteUrl).OpenWeb();

   
            var items =_web.Lists["Customer"].GetItems(GetQuery());

            foreach (SPListItem item in items)
            {
                MessageBox.Show(string.Format("{0}----{1}", item["Title"], item["CityTitle"]));
            }
        }
        
        private SPQuery GetQuery()
        {
            SPQuery _query = new SPQuery();
            
            _query.Query = "";
            _query.Joins = @"<Join Type='INNER' ListAlias='City'>
                          <!--List Name: CustomerCity-->
                          <Eq>
                            <FieldRef Name='City' RefType='ID' />
                            <FieldRef List='City' Name='ID' />
                          </Eq>
                        </Join>";

            _query.ProjectedFields = @"<Field Name='CityTitle' Type='Lookup' List='City' ShowField='Title' />
                                    <Field Name='CityContentTypeId' Type='Lookup' List='City' ShowField='ContentTypeId' />";

            _query.ViewFields = @" <FieldRef Name='Title' />
                                     <FieldRef Name='CityTitle' />";

            return _query;
        }

The above “Query” property of the SPQuery class I left blank you can enter the condition according to your requirement.

Comments

Popular posts from this blog

SharePoint RPC Protocols Examples Using OWSSVR.DLL

What is SharePoint RPC Protocols? Part 1 This reference includes information about the methods and usage of SharePoint Foundation Remote Procedure Call (RPC) protocol. This protocol can be used in Win32-based applications or in ASPX applications to make HTTP POST requests to the server. Methods in this protocol that do not modify the contents of the database can also be used in URL protocol to make HTTP GET requests. Definition taken from http://msdn.microsoft.com/en-us/library/ms448359.aspx You will find the OWSSVR.DLL in SharePoint 2010 Server Physical Path: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI and MOSS C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI OWSSVR.DLL List of commands DialogView  Display ExportList GetProjSchema GetUsageBlob HitCounter RenderView To read more about the OWSSVR.DLL command Please read the URL Protocol from Microsoft Blog having a URL http://msdn.microsoft.com/en...

SharePoint 2013 Search Database Part 1

SharePoint 2013 Search architecture drastically change, as earlier in FS4SP 2010 we have 2 search applications “FASTContentSSA” and “FASTQuerySSA” and 7 total database in use. Following are the List of DB (FS4SP) FASTContentSSA Search Service Application DB Search Service Application Crawl Store DB Search Service Application Property Store DB FASTQuerySSA Search Service Application DB Search Service Application Crawl Store DB Search Service Application Property Store DB FASTSearchAdminDatabase : Fast Search Admin Database  In SharePoint 2013 search has only 1 Search Service application and 4 database in use. No property store database need any more, now the properties are directly stored inside the index component and all the index directly indexed to the physical system where FS4SP data comes from database as well as from the File system now data directly stored and indexed/ retried from the Physical disk because of this performance increase and search experien...

STS CryptographicException Error : Key set does not exist

Common mistakes Both SharePoint Site and SSO Site NOT running on the same application pool. Application pool identity user doesn’t have permission to access the certification.  Solution to this problem Set the same identity pool to  : 2. Be sure to grant rights to the certificate for the App Pool running the web service Start -> Run -> MMC File -> Add/Remove Snapin Add the Certificates Snap In Select Computer Account, then hit next Select Local Computer (the default), then click Finish On the left panel from Console Root, navigate to Certificates (Local Computer) -> Personal -> Certificates You're certificate will most likely be here. Right click on your certificate -> All Tasks -> Manage Private Keys Set you're private key settings here. Add app pool account Reset iis