SQL多表多字段联合查询怎么弄?最终结果用HTML页面以表格形式显示(表格已有,类似excel)。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL多表多字段联合查询怎么弄?最终结果用HTML页面以表格形式显示(表格已有,类似excel)。相关的知识,希望对你有一定的参考价值。
SQL多表多字段联合查询怎么弄?最终结果用html页面以表格形式显示。表格已有,类似excel。只需要提取数据。
目前有一个报表需要做,只是涉及到 SQL 8个表联合查询。
主表通过字段 主1 至 主7 分别对应7个副表进行联合查询。
主表每个主字段对应一个副表。主表每个主字段只有一行,且对应副表的多行数据。
主表字段主1 至 主7 不一定都有数据,只显示有数据的。且不论副表有无数据,均显示有数据的主表字段内容。
由于报表的限制,主表字段主1 至 主7要显示在一列。副表所有字段显示在一列,
对应结构如下:
主表A 副表
主表mainid 副表 mainid
字段主1 ———— 副表1
字段主2 ———— 副表2
字段主3 ———— 副表3
字段主4 ———— 副表4
字段主5 ———— 副表5
字段主6 ———— 副表6
字段主7 ———— 副表7
即:如果主表字段主1有数据,则查看副表1有无数据,有则都显示,副表1无数据,则只显示主表字段主1的数据。其后同理。
补充条件:
有时候主表字段无数据,但是副表字段有数据,也要显示出来
类似excel表的第一列(主表),第二列(副表),一共7行。每行的第一列和第二列都可能是空的,但是肯定有一格是有数据的。
已经是现有系统了。数据库只能用SQL、页面是HTML+JS。没办法改其它的了。
追答你要会开发,这需求so easy;你要不会开发,在这里也不可能问出有用的答案。多去百度找相关的文章看看吧。既然以前有了,那找以前的人做就行了。
sql,js什么的,都可以的,并不影响结果。我只是举例而已。
SharePoint 列表多表联合查询
在SharePoint平台二次开发中,我们有时需要涉及多表关联查询展示多列表中的不同字段信息;SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,有一定的局限性,需要使用SPQuery的Joins属性来完成。
联合查询的前提条件:
1、子列表必须采用查阅项进行关联主表;
下面,我们通过一个简单的例子,为大家演示一下如何使用SPQuery通过查阅项字段来进行两个列表的联合查询。
1、创建主列表,City是城市;子列Address,是地址,子列表新增加查阅项CityLook进行关联,如下表所示:
2、执行查询语句:
1 string SiteUrl = Microsoft.SharePoint.SPContext.Current.Site.Url ; 2 using (SPSite site = new SPSite(SiteUrl)) 3 { 4 using (SPWeb web = site.OpenWeb("/Test")) 5 { 6 SPQuery query = new SPQuery(); 7 //Joins属性,这里有INNER和LEFT两种方式连接,均可查询,而且支持多表连接; 8 query.Joins = "<Join Type=\'INNER\' ListAlias=\'City\'>" + 9 "<Eq>" + 10 "<FieldRef Name=\'CityLook\' RefType=\'ID\'/>" + 11 "<FieldRef List=\'City\' Name=\'ID\'/>" + 12 "</Eq>" + 13 "</Join>"; 14 15 16 //设置关联的查阅项字段 17 query.ProjectedFields = "<Field Name=\'CityDescription\' Type=\'Lookup\' List=\'City\' ShowField=\'Description\'/>" + 18 "<Field Name=\'CityCode1\' Type=\'Lookup\' List=\'City\' ShowField=\'Code\'/>"; 19 //设置需要显示的字段 20 query.ViewFields = "<FieldRef Name=\'ID\'/>" + 21 "<FieldRef Name=\'Title\'/>" + 22 "<FieldRef Name=\'CityCode\'/>" + 23 "<FieldRef Name=\'CityLook\'/>" + 24 "<FieldRef Name=\'CityCode1\'/>" + 25 "<FieldRef Name=\'CityDescription\'/>"; 26 27 //query.Query = "<Where><Eq><FieldRef Name=\'CityCode\'/><Value Type=\'Text\'>XM</Value></Eq></Where>"; 28 //查阅项查询,采用ID值进行查询 29 query.Query = "<Where><Eq><FieldRef Name=\'CityLook\' LookupId=\'TRUE\'/><Value Type=\'Lookup\'>4</Value></Eq></Where>"; 30 31 SPList list = web.Lists["Address"]; 32 33 SPListItemCollection items = list.GetItems(query); 34 35 foreach (SPListItem item in items) 36 { 37 SPFieldLookupValue CityLook = new SPFieldLookupValue(item["CityLook"].ToString()); 38 SPFieldLookupValue CityCode1 = new SPFieldLookupValue(item["CityCode1"].ToString()); 39 40 string info = "ID:" + item.ID.ToString() +";"+ 41 "Title:" + item["Title"].ToString() + ";" + 42 "CityCode:" + item["CityCode"].ToString() + ";" + 43 "CityDescription:" + item["CityDescription"].ToString() + ";" + 44 "CityCode1:" + CityCode1.LookupValue + "[" + CityCode1.LookupId + "]" + ";" + 45 "CityLook:" + CityLook.LookupValue + "[" + CityLook.LookupId + "]"; 46 Response.Write(info + "<br />"); 47 } 48 49 //DataTable dtData = items.GetDataTable(); 50 //GridView1.DataSource = dtData; 51 //GridView1.DataBind(); 52 } 53 }
3、执行效果图:
注意事项:
1、Join属性类型Type若设置为LEFT时,若主表字段删除后,则加载可能会出错;
2、主表的字段若要在查询结果中体现,则需通过SPQuery.ProjectedFields设置查阅项的模式进行绑定显示;
以上是关于SQL多表多字段联合查询怎么弄?最终结果用HTML页面以表格形式显示(表格已有,类似excel)。的主要内容,如果未能解决你的问题,请参考以下文章