`
wolfmaster
  • 浏览: 159139 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关联查询

 
阅读更多
目前开发的一个小项目中尝试使用Subsonic的常常会使用到Query,把一些常用的方法收集以备查阅。

下面是来自Subsonic官方网站的一些例子,例子基于Northwind数据库

Simple Select with string columns

            int records = new Select("productID").
                 From("Products").GetRecordCount();

            Assert.IsTrue(records == 77);Simple Select with typed columns

            int records = new Select(Product.ProductIDColumn, Product.ProductNameColumn).
                From<Product>().GetRecordCount();
            Assert.IsTrue(records == 77);Returning a Single object(返回简单实体)

            Product p = new Select().From<Product>().
               Where("ProductID").IsEqualTo(1).ExecuteSingle<Product>();
            Assert.IsNotNull(p);Returning all columns(返回所有列)

            int records = new Select().From("Products").GetRecordCount();
            Assert.IsTrue(records == 77);Simple Where(简单Where语句)

            int records = new Select().From("Products").
                Where("categoryID").IsEqualTo(5).GetRecordCount();
            Assert.AreEqual(7, records);Simple Where with And (as Collection)(带有And的Where语句,返回集合)

            ProductCollection products =
                DB.Select().From("Products")
                    .Where("categoryID").IsEqualTo(5)
                    .And("productid").IsGreaterThan(50)
                    .ExecuteAsCollection<ProductCollection>();Simple Inner Join(内联接)

            SubSonic.SqlQuery q = new Select("productid").From(OrderDetail.Schema)
                .InnerJoin(Product.Schema)
                .Where("CategoryID").IsEqualTo(5);Simple Join With Table Enum

            SubSonic.SqlQuery q = new Select().From(Tables.OrderDetail)
                .InnerJoin(Tables.Product)
                .Where("CategoryID").IsEqualTo(5);Multiple Joins As Collection(多级联接)

            CustomerCollection customersByCategory = new Select()
                .From(Customer.Schema)
                .InnerJoin(Order.Schema)
                .InnerJoin(OrderDetail.OrderIDColumn, order.OrderIDColumn)
                .InnerJoin(Product.ProductIDColumn, orderDetail.ProductIDColumn)
                .Where("CategoryID").IsEqualTo(5)
                .ExecuteAsCollection<CustomerCollection>();Left Outer Join With Generics(左外联接)

            SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
                .From<Customer>()
                .LeftOuterJoin<Order>();Left Outer Join With Schema()

            SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
                .From(Customer.Schema)
                .LeftOuterJoin(Order.CustomerIDColumn, Customer.CustomerIDColumn);Left Outer Join With Magic Strings

            SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
                .From("Customers")
                .LeftOuterJoin("Orders");Simple Select With Collection Result

            ProductCollection p = Select.AllColumnsFrom<Product>()
                .ExecuteAsCollection<ProductCollection>();Simple Select With LIKE

            ProductCollection p = DB.Select()
                .From(Product.Schema)
                .InnerJoin(Category.Schema)
                .Where("CategoryName").Like("c%")
                .ExecuteAsCollection<ProductCollection>();Using Nested Where/And/Or

            ProductCollection products = Select.AllColumnsFrom<Product>()
                .WhereExpression("categoryID").IsEqualTo(5).And("productid").IsGreaterThan(10)
                .OrExpression("categoryID").IsEqualTo(2).And("productID").IsBetweenAnd(2, 5)
                .ExecuteAsCollection<ProductCollection>();            ProductCollection products = Select.AllColumnsFrom<Product>()
                .WhereExpression("categoryID").IsEqualTo(5).And("productid").IsGreaterThan(10)
                .Or("categoryID").IsEqualTo(2).AndExpression("productID").IsBetweenAnd(2, 5)
                .ExecuteAsCollection<ProductCollection>();Simple Paged Query(分页查询)

            SubSonic.SqlQuery q = Select.AllColumnsFrom<Product>().
               Paged(1, 20).Where("productid").IsLessThan(100);Paged Query With Join(带联接的分页查询)

            SubSonic.SqlQuery q = new Select("ProductId", "ProductName", "CategoryName").
                From("Products").InnerJoin(Category.Schema).Paged(1, 20);Paged View

            SubSonic.SqlQuery q = new Select().From(Invoice.Schema).Paged(1, 20);Simple IN Query(in查询)

            int records = new Select().From(Product.Schema)
                .Where("productid").In(1, 2, 3, 4, 5)
                .GetRecordCount();
            Assert.IsTrue(records == 5);Using IN With Nested Select

            int records = Select.AllColumnsFrom<Product>()
                .Where("productid")
                .In(
                new Select("productid").From(Product.Schema)
                    .Where("categoryid").IsEqualTo(5)
                )
                .GetRecordCount();(返回记录数)Using Multiple INs

            SubSonic.SqlQuery query = new Select()
                .From(Product.Schema)
                .Where(Product.CategoryIDColumn).In(2)
                .And(Product.SupplierIDColumn).In(3);select * from table where column1 = 1 and (column2 = 2 or column2 = 3)转为Select().From<Product>.Where(...).AndExpression(column2).IsEqualTo(2).Or(column2).IsEqualTo(3)   
想查看更多Subsonic相关的资料可以到http://subsonicproject.com/官方网站。
分享到:
评论

相关推荐

    ThinkPHP5联合(关联)查询、多条件查询与聚合查询实例详解

    在ThinkPHP5中,联合查询通常是指通过数据库中的外键关系,将两个或多个表关联起来进行查询。为了说明这一点,假设我们有两个表:`darling_project`(项目表)和`darling_version`(版本号表)。 **项目表结构**: `...

    易语言ACCESS数据库多表关联查询例程

    在易语言中,与ACCESS数据库进行交互是常见的操作,特别是涉及到多表关联查询时,能够帮助开发者获取更复杂的数据关系。 在ACCESS数据库中,多表关联查询是数据挖掘和分析的关键技术。它允许我们从多个表中提取数据...

    thinkPHP5解决不同服务器不同数据库表关联查询问题

    ### thinkPHP5解决不同服务器不同数据库表关联查询问题 在实际的应用场景中,尤其是在大型分布式系统中,数据往往不会集中存放在同一个数据库或同一台服务器上。为了提高系统的可用性和可扩展性,开发者通常会选择...

    hibernate多表联合查询

    ### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。Hibernate作为一款流行的Java持久层框架,提供了一种非常便捷的方式来处理...

    Mysql多表联合查询

    MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!

    mybatis 关联查询完整代码

    在对应的SQL查询中,你可以使用嵌套查询或联合查询来获取相关数据,并结合ResultMap进行映射。 2. **一对多关联查询**: 对于一对多关系,我们可以使用`collection`元素。比如`User`表有一对多关系到`Order`表,...

    织梦条件联合查询

    【织梦条件联合查询】是基于织梦内容管理系统(DedeCMS)的一种高级搜索功能,它允许用户根据多个条件组合进行复杂的数据筛选,类似于京东等电商平台的商品搜索功能。这一特性提高了用户在网站上查找特定信息的效率...

    mybatis自关联查询

    本篇文章将重点讲解 MyBatis 中的自关联查询,以“新闻栏目”为例,探讨如何实现一对多的关系。 在新闻系统中,栏目(Category)与新闻(News)通常存在一对多的关系:一个栏目可以包含多个新闻,而一个新闻则属于...

    ACCESS数据库多表关联查询例程

    本例程将深入探讨如何在Access中进行多表关联查询,这对于理解数据库设计和数据提取至关重要。"SanYe"可能指的是教程作者或某个特定的编程环境。在这个教程中,我们将学习如何利用Access的查询功能连接多个表格,...

    Spring boot2基于Mybatis实现多表关联查询

    Spring Boot 2 基于 MyBatis 实现多表关联查询 Spring Boot 2 是目前非常流行的 Java 框架,它提供了许多强大的功能,例如自动配置、 starters 机制等。MyBatis 是一个流行的持久层框架,提供了强大的数据库交互...

    Oracle基础查询关联查询练习题.docx

    Oracle 基础查询关联查询练习题中涉及到多种查询类型,包括基础查询、关联查询、分组查询等。下面我们将对每个练习题的知识点进行详细解释。 1. 基础查询 基础查询是指从数据库中检索数据的基本操作。 Oracle 基础...

    Oracle sql语句多表关联查询

    Oracle SQL 语句多表关联查询 Oracle SQL 语句多表关联查询是数据库管理系统中的一种常见查询方式,它可以从多个表中检索数据,满足业务需求。本文将详细介绍 Oracle SQL 语句多表关联查询的知识点,包括字符串和...

    hibernateHQL关联查询

    ### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...

    kettle实现SQL关联查询

    "Merge Join" Step就是其中之一,它允许用户实现类似SQL中的各种类型关联查询,包括INNER JOIN、LEFT JOIN、RIGHT JOIN以及FULL JOIN。 INNER JOIN是SQL中的一种基本联接类型,它返回两个表中存在匹配的记录。在...

    ACCESS数据库多表关联查询例程.rar

    3. **联合查询**(UNION):将两个或更多SELECT语句的结果集合并为一个。注意,所有SELECT语句必须返回相同数量和类型的列。 4. **数据透视表查询**:对数据进行汇总和分析,可以展示不同维度的数据统计,如总计、...

    SQL多表联合查询.rar

    SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言,而多表联合查询是SQL中一种重要的数据检索方法,尤其在处理复杂的数据关联时显得尤为重要。 在关系数据库中,数据通常分散在多个表中,每...

    mysql多表联合查询的教程

    MySQL 多表联合查询教程 在本教程中,我们将学习 MySQL 中的多表联合查询,包括多表插入和多表更新的操作。多表联合查询是指从多个表中检索数据的操作,这种操作在实际应用中非常常见。 什么是多表联合查询 多表...

    mybatis联合查询

    在处理复杂的数据库关联查询时,MyBatis 提供了多种解决方案,包括一对一、一对多、多对一以及多对多关系的映射。下面将详细讲解这些概念以及如何在 MyBatis 中进行操作。 1. **一对一关联查询(One-to-One)**: ...

    sql多表关联查询,三表关联查询

    sql多表关联查询,三表关联查询

    mongoose的关联查询

    最近在做一个项目涉及到mongoose的关联查询等等,之前做的mysql,postgresql比较多,而mongoose用的都是比较简单的存储数据,简单查询等等。 刚开始涉及ref还是有点小晕的,查询了相关资源,也可以模模糊糊做出来,...

Global site tag (gtag.js) - Google Analytics