精华内容
下载资源
问答
  • -- 多对多查询:一个用户创建多个订单,一个订单包含多个订单明细,一个订单明细包含一个商品 --> <resultMap type="com.hbut.po.User" id="findUserItemsMap"> &lt...
    <!-- 多对多查询:一个用户创建多个订单,一个订单包含多个订单明细,一个订单明细包含一个商品 -->
    	<resultMap type="com.hbut.po.User" id="findUserItemsMap">
    	    <!-- 一个用户 -->
    	    <id column="usersId" property="id"/>
    	    <result column="username" property="username"/>
    	    <result column="sex" property="sex"/>
    	    <result column="address" property="address"/>
    	    
    	    <!-- 多个订单 -->
    	    <collection property="orderList" ofType="com.hbut.po.Orders">
    	       	   <id column="id" property="id"/>
    			   <result column="user_id" property="userId"/>
    			   <result column="number" property="number"/>
    			   <result column="createtime" property="createtime"/>
    			   <result column="note" property="note"/>
    			   <!-- 多个明细 -->
    			   <collection property="orders" ofType="com.hbut.po.Orderdetail">
    			      <id column="orderdetail_id" property="id"/>
    			      <result column="orders_id" property="ordersId"/>
    				  <result column="items_id" property="itemsId"/>
    				  <result column="items_num" property="itemsNum"/>
    				  <!--一个订单明细包含一个商品-->
    				  <association property="items" javaType="com.hbut.po.Items">
    				       <result column="name" property="name"/>
    					   <result column="price" property="price"/>
    					   <result column="detail" property="detail"/>
    				  </association>
    			   </collection>
    	    </collection>
    	    
    	</resultMap>
    	<select id="findUserItems" resultMap="findUserItemsMap">
    		SELECT 
    		  orders.*,
    		 `user`.id usersId,
    		  USER.username,
    		  USER.sex,
    		  USER.address,
    		  orderdetail.id orderdetail_id,
    		  orderdetail.items_id,
    		  orderdetail.items_num,
    		  orderdetail.orders_id,
    		  items.name,
    		  items.price,
    		  items.detail
    		FROM
    		  orders,
    		  USER,
    		  orderdetail,
    			items
    		WHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id=items.id
    	</select>
    

    User类:

    //属性名和数据库表的字段对应

    private int id;
    private String username;// 用户姓名
    private String sex;// 性别
    private Date birthday;// 生日
    private String address;// 地址

    //一个用户可以创建多个订单
    private List orderList;

    Orders类:

    private Integer id;

    private Integer userId;
    private String number;
    private Date createtime;
    private String note;
    //一个订单包含多个订单明细
    private List<Orderdetail> orders;
    

    Orderdetail类

    private Integer id;
    private Integer ordersId;
    private Integer itemsId;
    private Integer itemsNum;
    

    //一个订单明细对应一个商品
    private Items items;

    Items类(商品类)

    private Integer id;
    private String name;
    private Float price;
    private String pic;
    private Date createtime;
    private String detail;
    

    运行结果:一个用户创建的多个订单,每个订单包含多个订单明细,每个订单明细包含一个商品

    作者:wickedvalley
    来源:CSDN
    原文:https://blog.csdn.net/wickedvalley/article/details/53914498
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • sql从查询结果创建一个临时表

    万次阅读 2013-08-23 13:50:55
    查询结果创建一个临时表 临时表随数据库的关闭而自动消失,不占内存空间。创建临时表的方法与创建永久表的方法相似,只不过在新表的名称前加一个“#”号或两个“##”号。一个“#”号表示创建的是局部的临时表;两...
    从查询结果创建一个临时表
    临时表随数据库的关闭而自动消失,不占内存空间。创建临时表的方法与创建永久表的方法相似,只不过在新表的名称前加一个“#”号或两个“##”号。一个“#”号表示创建的是局部的临时表;两个“##”号表示创建的是全局临时表。
    示例:
    在“course”表中,把查询“课程类别”是“艺术类”的结果保存到临时表“##newltable”中,并查看“##newtable”表的信息。在查询分析器中输入的SQL语句如下:
    use student
    select * into  ##newltable
    from course
    where 课程类别='艺术类'

    select  *  from  ##newltable


    http://www.isstudy.com/sqlser/2575.html


    展开全文
  • 我现在需要创建一个视图A,视图里面是三个视图BCD,根据一个页面传来的值判断不同的值查询不同的视图,这个值不少表中的字段。语法该怎么写?大神们帮帮忙啊!!
  • 创建一个存储过程,用于查询指定课程号的课程 --是否被学生选修,如果有学生选修, --则在该过程中设置一个输出参数用于 --返回选修该课程的学生人数, --然后让该过程返值1, --如果...

    创建一个存储过程,用于查询指定课程号的课程

    --是否被学生选修,如果有学生选修,
    --
    则在该过程中设置一个输出参数用于
    --
    返回选修该课程的学生人数,
    --
    然后让该过程返值1
    --
    如果没有被任何一个学生选修,则该过程返回值2
    IF exists (select* from sys.objects where name='CunChu_lx_cno_course' and type='p'  )
      drop proc CunChu_lx_cno_course
    go
    create procedure CunChu_lx_cno_course
     @out int output,
     @in  varchar(10)=1
    as
     select @out=count(*)from sc
     where
    cno=@in
     if(@out=0)
       begin
         set @out='2'
       end
     else
       begin
         set @out='1'
       end

    展开全文
  • 动态创建Lambda表达式实现高级查询

    万次阅读 热门讨论 2016-05-14 09:43:32
    中有一个功能是一个高级查询的需求,在查询条件方面大概有7、8个查询条件。需求就是如果一个条件都不输入就默 认查询全部的数据,那个条件不为空的时候就在查询条件上面添加对响应字段的限制,也就是说我们在写...


       需求简介


       最近这几天做的东西总算是回归咱的老本行了,给投资管理项目做一个台账的东西,就是类似我们的报表。其


    中有一个功能是一个高级查询的需求,在查询条件方面大概有7、8个查询条件。需求就是如果一个条件都不输入就默


    认查询全部的数据,那个条件不为空的时候就在查询条件上面添加对响应字段的限制,也就是说我们在写查询条件的


    时候不能写死,因为我们不知道我们到底有几个条件?到底有几个条件。所以需要我们动态的创建Lambd表达式。看


    了看他们相似的功能,在实现的时候用的动态拼接SQL语句,那些SQL代码啊?看到都头疼,所以我直接放弃了,用咱


    自己熟悉的知识来实现。和这个相似的功能自己在之前的《图书馆项目》中实现过,请点击我


       具体实现—小Demo


       首先需要引入命名空间


       using System.Linq.Expressions.Expression;


       

    //创建一个数组用来当做例子
    
    
       var ints = new int []{ 1, 2 , 3 , 4 , 5 , 6 };
    
    
       // 要创建形如 i => i < 5
    
    
       //创建参数 i
    
    
    var parameter  = Expression.Parameter(typeof(int),”i”);
    
    
    //创建常数 5
    
    
    var constant = Expression.Constant(5);
    
    
    //创建 i > 5
    
    
    var bin = Expression.GreaterThan(parameter,constant);
    
    
    //获取Lambda表达式
    
    
    var lambda=Expression.Lambda<Func<Int32,Boolean>>(bin,parameter);
    
    
    //取得查询结果
    
    
    var query = ints.Where(lambda.Compile());


       通过上面一个小Demo我们可以简单的看到动态创建Lambda表达式的雏形,下面在介绍一个比较复杂的例子。


    BinaryExpression condition = null;
    
    //要构造的表达式i==1||i==2||i==3.....
    
    for (int i = 0; i < ints.Length; i++)
    
    {
    
          ConstantExpression ce = Expression.Constant(i);
    
          if (condition == null)
    
          {
    
               condition = Expression.Equal(parameter, ce);
    
          }
    
          else
    
          {
    
               var right = Expression.Equal(parameter, ce);
    
               condition = Expression.Or(condition, right);
    
          }
    
    }
    
    Expression<Func<Int32, Boolean>> lambda = Expression.Lambda<Func<Int32, Boolean>>(condition, parameter);
    


       实体类的实现


       上面都是比较简单的小例子,但是在我们项目中都是来对实体进行条件查询的,所以呢小编在下面会给大家介


    绍一下如何对实体类进行构造。


     //p => p.Name == "1" && p.Address == "2"
    
                ParameterExpression parameter1 = Expression.Parameter(typeof(Person), "p");
    			
    	    MemberExpression member1 = Expression.PropertyOrField(parameter1, "Name");
    			 
    	    MemberExpression member2 =	Expression.PropertyOrField(parameter1, "Address"),
    			 
                ConstantExpression constant1 = Expression.Constant("郑浩");
    			
                ConstantExpression constant2 = Expression.Constant("河北");
              
             var query1 = Expression.Equal(member1, constant1);//Equal等于;GreaterThanOrEqual大于;LessThanOrEqual小于
    
                var query2 = Expression.Equal(member2, constant2);
    
                var query = Expression.And(query1, query2);//and 与;or或
    
                var lambda1 = Expression.Lambda<Func<Person, Boolean>>(query, parameter1);
    
                var list = MethodExtend.GetUser(lambda1.Compile());
    


                代码介绍:

            1)创建表达式的开始部分:p=>


            2、3)创建我们要查询的字段:p.Name和p.Address


           4、5)给给变量赋值,这些值和变量可以任意匹配


           6、7)匹配查询条件和对应的值:p.Name=="郑浩";p.Address=="河北"


           8、9)连接查询条件;p.Name=="郑浩"&&p.Address=="河北"


           10)创建最后的查询条件:p=>p.Name=="郑浩"&&p.Address=="河北"


           11)最后执行查询条件


       项目实战


       我首先创建了一个接口,因为这个功能不是我自己使用,还有别的模块也需要这个功能;


    namespace Seagull2.Investment.WebApi
    {
        /// <summary>
        /// 可实现表达式接口
        /// </summary>
        public interface IExpressionable<T> where T : class
        {
            /// <summary>
            /// 创建表达式
            /// </summary>
            /// <returns></returns>
            Expression<Func<T, bool>> CreateExpression();
        }
    }
    


       我将创建Landa表达式的部分放在module中,这个module是和界面对应,接收界面传递参数,代码如下:


     public class RealEstateProjectCondition : IExpressionable<View_RealEstateProject>
        {
            
            /// <summary>
            /// 项目所在省份
            /// </summary>
            public string ProjectOfProvince { get; set; }
            /// <summary>
            /// 项目所在城市
            /// </summary>
            public string ProjectOfCity { get; set; }
    
            /// <summary>
            /// 项目业态名称
            /// </summary>
            public string ProjectFormatName { get; set; }
    
            /// <summary>
            /// 所属业务团队
            /// </summary>
            public string BusiGroup { get; set; }
            /// <summary>
            /// 项目所处阶段
            /// </summary>
            public string PrjStageCode { get; set; }
            /// <summary>
            /// 申请起始日期
            /// </summary>
            public DateTimeOffset? ApplyStartDate { get; set; }
            /// <summary>
            /// 申请起始日期
            /// </summary>
            public DateTimeOffset? ApplyEndDate { get; set; }
            /// <summary>
            /// 基金规模(亿元)上线
            /// </summary>
            public decimal? StartFundSize { get; set; }
            /// <summary>
            /// 基金规模(亿元)下线
            /// </summary>
            public decimal? EndFundSize { get; set; }
    
            /// <summary>
            /// 创建房地产投资查询条件表达式
            /// </summary>
            /// <returns></returns>
            public Expression<Func<View_RealEstateProject, bool>> CreateExpression()
            {
                ParameterExpression parameter = Expression.Parameter(typeof(View_RealEstateProject), "p");
                //项目类型编码
                ConstantExpression constantPrjTypeCode = Expression.Constant("A0BE01A2-1BE3-4AAE-8DE3-B84BB6B2A58A");
                MemberExpression memberPrjTypeCode = Expression.PropertyOrField(parameter, "PrjTypeCode");
                var query = Expression.Equal(memberPrjTypeCode, constantPrjTypeCode);
                //项目所在省份
                if (!string.IsNullOrEmpty(this.ProjectOfProvince))
                {
                    ConstantExpression constantProjectOfProvince = Expression.Constant(this.ProjectOfProvince);
                    MemberExpression memberProjectOfCity = Expression.PropertyOrField(parameter, "ProjectOfProvince");
                    query = Expression.And(query, Expression.Equal(memberProjectOfCity, constantProjectOfProvince));
                }
                //项目所在城市
                if (!string.IsNullOrEmpty(this.ProjectOfCity))
                {
                    ConstantExpression constantProjectOfCity = Expression.Constant(this.ProjectOfCity);
                    MemberExpression memberProjectOfCity = Expression.PropertyOrField(parameter, "ProjectOfCity");
                    query = Expression.And(query, Expression.Equal(memberProjectOfCity, constantProjectOfCity));
    
                }
                //项目业态名称
                if (!string.IsNullOrEmpty(this.ProjectFormatName))
                {
                    ConstantExpression constantProjectFormatName = Expression.Constant(this.ProjectFormatName);
                    MemberExpression memberProjectFormatName = Expression.PropertyOrField(parameter, "ProjectFormatName");
                    query = Expression.And(query, Expression.Equal(memberProjectFormatName, constantProjectFormatName));
    
                }
                //所属业务团队
                if (!string.IsNullOrEmpty(this.BusiGroup))
                {
                    ConstantExpression constantBusiGroup = Expression.Constant(this.BusiGroup);
                    MemberExpression memberBusiGroup = Expression.PropertyOrField(parameter, "BusiGroup");
                    query = Expression.And(query, Expression.Equal(memberBusiGroup, constantBusiGroup));
    
                }
                //项目所处阶段
                if (!string.IsNullOrEmpty(this.PrjStageCode))
                {
                    ConstantExpression constantPrjStageCode = Expression.Constant(this.PrjStageCode);
                    MemberExpression memberPrjStageCode = Expression.PropertyOrField(parameter, "PrjStageCode");
                    query = Expression.And(query, Expression.Equal(memberPrjStageCode, constantPrjStageCode));
    
                }
                //申请开始时间
                if (this.ApplyStartDate.HasValue)
                {
                    ConstantExpression constantApplyStartDate = Expression.Constant(this.ApplyStartDate.Value);
                    MemberExpression memberApplyStartDate = Expression.PropertyOrField(parameter, "ApplyDate");
                    query = Expression.And(query, Expression.GreaterThanOrEqual(memberApplyStartDate, constantApplyStartDate));
                }
                //申请结束时间
                if (this.ApplyEndDate.HasValue)
                {
                    ConstantExpression constantApplyEndDate = Expression.Constant(this.ApplyEndDate.Value);
                    MemberExpression memberApplyEndDate = Expression.PropertyOrField(parameter, "ApplyDate");
                    query = Expression.And(query, Expression.LessThanOrEqual(memberApplyEndDate, constantApplyEndDate));
                }
                //投资规模(亿元)上线
                if (this.StartFundSize.HasValue)
                {
                    ConstantExpression constantStartFundSize = Expression.Constant(this.StartFundSize.Value);
                    MemberExpression memberStartFundSize = Expression.PropertyOrField(parameter, "FundSize");
                    query = Expression.And(query, Expression.GreaterThanOrEqual(memberStartFundSize, constantStartFundSize));
                }
                //投资规模(亿元)下线
                if (this.EndFundSize.HasValue)
                {
                    ConstantExpression constantEndFundSize = Expression.Constant(this.EndFundSize.Value);
                    MemberExpression memberEndFundSize = Expression.PropertyOrField(parameter, "FundSize");
                    query = Expression.And(query, Expression.LessThanOrEqual(memberEndFundSize, constantEndFundSize));
                }
                //版本结束时间
                ConstantExpression constantVesionEndTime = Expression.Constant(null);
                MemberExpression memberVesionEndTime = Expression.PropertyOrField(parameter, "VersionEndTime");
                query = Expression.And(query, Expression.Equal(memberVesionEndTime, constantVesionEndTime));
                //有效性
                ConstantExpression constantValidStatus = Expression.Constant(true);
                MemberExpression memberValidStatus = Expression.PropertyOrField(parameter, "ValidStatus");
                query = Expression.And(query, Expression.Equal(memberValidStatus, constantValidStatus));
    
                return Expression.Lambda<Func<View_RealEstateProject, bool>>(query, parameter);
            }
        }
    
    }

      这样我们的controller和service都非常的简单明了,把查询条件作为实体的一部分。


       service代码:


    public List<View_RealEstateProject> LoadView_RealEstateProject(RealEstateProjectCondition condition)
            {
                using (var db = new InvestmentDbContext())
                {
                    
                    return db.View_RealEstateProject.Where(condition.CreateExpression()).ToList();
                }
            }
       

       controller代码:


    [HttpPost, HttpGet]
            public IHttpActionResult LoadQueryResult(RealEstateProjectCondition condition)
            {           
                return Json(_realEstabDasbordService.LoadView_RealEstateProject(condition));
            }


        小结


       关于动态创建Lamda表达式就给大家介绍到这,通过动态创建表达式非常方便实现高级查询,和拼接sql来说这


    还是非常简单的,并且出错的几率大大降低,所以我没有采用他们类似功能的实现,所以说我们在实现某些需求的时


    候需要我们好好考虑在下手写代码,能参考的东西不一定是最合适的,还需要我们自己探索一些,希望给大家带来帮


    助。
       

    展开全文
  • MYSQL查询大于创建时间小时的数据

    万次阅读 2020-07-10 14:11:34
    1.查询大于times小时的数据 //大于号后面都是获取times小时后的时间 select*from table where now() >SUBDATE(times,interval -1 hour); select*from table where now() > SUBDATE(times,interval -60*60...
  • 那什么情况下执行相同的sql查询语句会使用同一个Sqlsession?设么情况下相同的sql查询语句会创建不同的Sqlsession从而导致一级缓存失效?(不好意思默认是5C,发布时候没注意,有会的我可以加微信发红包)
  • 用类与对象创建一个银行账户类。银行账户类包括账号、用户姓名、密码和余额属性,银行账户类的功能包括: 开户 查询余额 取款 存款 功能实现思路: 开户方法 Account(),创建账户的账号、密码、姓名和余额 ...
  • 创建YGGL数据库并在YGGL数据库创建表:employees,salary,departments 创建XSCJ数据库并在XSCJ数据库创建表:XS,KC,XS_KC 、YGGL 1.首先需要创建YGGL数据库: create database YGGL default character...
  • pycharm+django创建一个搜索网页

    千次阅读 2017-11-01 21:23:54
    本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接)创建工程比如,我创建的工程目录结构如下: ...创建一个test.html<!DOCTY
  • 2019access创建数据表、查询和窗体

    千次阅读 2019-10-25 13:59:14
    2019 access创建数据表、查询和窗体 ...点击 “表” ,出现下图,其中第一列 ID 是表默认的一个自增序列 图二图二图二 单击 “单击已添加”,出现下图,你可以选择你想要添加的数据类型,如:“数...
  • 查询智能合约的创建信息

    千次阅读 2018-08-11 17:57:04
    在https://etherscan.io上查询一个智能合约地址,信息显示如图所示。 其中有一条  Contract Creator: 0x0a88fb486012021369048452d7d5fbeb705da3c6at txn 0xe441928ac4300472d55a4ec2af81ec8533888c08170f4cc...
  • 1.远程登录mysql ... 2.创建用户 ...例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在mysql的root用户下进行 mysql>grant select,
  • 数据库索引创建,查询

    千次阅读 2018-04-26 10:55:14
    索引的详解索引的创建 主键索引的创建 主键索引的创建有两种方式, 1 在创建表的时候, 直接在指定列或者某几列为主键 create table aaa(id int primary key , name varchar(32)) 2添加表后, 对指定列创建索引...
  • Oracle基础之创建设置查询权限用户

    千次阅读 2019-08-10 09:48:07
    用户创建的可以参考博客: https://blog.csdn.net/u014427391/article/details/84889023 Oracle授权表权限给用户: * 语法:grant [权限名(select|insert |update|delete|all)] on [表名] to [用户名] * 例子:给...
  • 创建一个简单的触发器

    千次阅读 2010-05-08 13:02:00
    一、创建一个简单的触发器触发器是一种特殊的存储过程,类似于事件函数,SQL Server™ 允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列 T-SQL语句。触发器可以在...
  • ORACLE创建一个只读用户

    万次阅读 2018-11-07 22:03:02
    1. 打开sqldeveloper工具,在左边的菜单里找到Users,右键Users文件夹→新建 ...5.保存后使用新建的用户登录,例如为DEMO用户创建QIXL用户,在创建完毕用户以后,使用QIXL用户登录,访问DEMO用户的表通过sele...
  • postgresql创建序列查询序列

    千次阅读 2019-01-02 16:38:48
    序列号(SERIAL)类型 smallserial(int2), serial(int4) bigserial(int8) DROP TABLE t_student; CREATE TABLE t_student ( “Id” serial, “Name” VARCHAR (256...currval(regclass) bigint 返回最近次用 nextv...
  • Oracle创建两表关联查询的视图

    千次阅读 2015-06-30 15:02:21
    在项目开发中,有时候会用到多表查询,有很多种方法,比如关联,比如视图,但对于查询来说,视图查询是最快的,如果你的数据库的字段信息很多,那查询就得整表查,比如两表查询,我们就可以把要的字段抽取出来,放在...
  • 表内连接查询创建视图

    万次阅读 2010-08-10 13:17:00
    表内连接查询创建视图 create or replace view lili_memberInfo (会员编号,会员卡编号,会员姓名,会员性别,会员生日,会员电话,会员地址,证件类型,证件号码,加入日期,卡内余额,卡内积分,会员卡类型,会员卡级别...
  • oracle数据库创建Squence序列并查询

    万次阅读 2018-02-08 14:11:59
    create sequence test1minvalue 1maxvalue 9999start with 1increment by 1nocache;创建test1序列select test1.nextval from sys.dual;查询test1序列,每次查询加1
  • 创建一个简单的视图以及删除视图

    千次阅读 2019-03-16 16:11:39
    创建一个简单的视图: create [or replace] [{force|noforce}] view view_name as select 查询 [with read only constraint] 例子: create or replace view ones as select name,birthday,sex from one ...
  • 关于JPA方法名创建自动查询

    万次阅读 2016-03-04 16:39:15
    3.1如果是对象的一个属性,并且遇到and,则将其作为查询条件中的一个继续步骤2,判断SkuSkuCode 3.2如果不是对象的一个属性遇到And,则报错:对象中没有对应的属性,And算是强制拆分。 3.3. 如果是,并且也没有...
  • oracle中创建视图并查询视图

    万次阅读 2016-08-23 21:48:30
    1.创建视图:    CREATE OR REPLACE VIEW TB_CONF AS SELECT SI.SYSID id,SI.SYS_NAME_EN AS sysName,SI.SYS_NAME_CN AS sysCname,SI.RECEIVE_STATUS AS sysReceiveStatus,   SI.SEND_STATUS AS sysSendStatus,SI...
  • spring data jpa 可以通过在接口中按照规定语法创建一个方法进行查询,spring data jpa 基础接口中,如CrudRepository中findOne,save,delete等,那么我们自己怎么按照需要创建一个方法进行查询呢? 最常见的做法是...
  • oracle 将查询结果创建表并插入

    万次阅读 2017-06-24 10:53:33
    如果在sql server的t-sql,是很容易的:select * into 新表这新表不存在的话,就创建之。其实在oracle,也很容易,不过是另种写法:create table 新表 as select ...
  • MySql语句大全:创建、授权、查询、修改等

    万次阅读 多人点赞 2015-06-19 16:18:15
    MySql语句大全:创建、授权、查询、修改等
  • 我手里有几万张图片,请问用什么工具创建一个专门分类存储图片的数据库,方便平时查询

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,648,820
精华内容 659,528
关键字:

如何创建一个查询