目前开发的一个小项目中尝试使用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中,联合查询通常是指通过数据库中的外键关系,将两个或多个表关联起来进行查询。为了说明这一点,假设我们有两个表:`darling_project`(项目表)和`darling_version`(版本号表)。 **项目表结构**: `...
在易语言中,与ACCESS数据库进行交互是常见的操作,特别是涉及到多表关联查询时,能够帮助开发者获取更复杂的数据关系。 在ACCESS数据库中,多表关联查询是数据挖掘和分析的关键技术。它允许我们从多个表中提取数据...
### thinkPHP5解决不同服务器不同数据库表关联查询问题 在实际的应用场景中,尤其是在大型分布式系统中,数据往往不会集中存放在同一个数据库或同一台服务器上。为了提高系统的可用性和可扩展性,开发者通常会选择...
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。Hibernate作为一款流行的Java持久层框架,提供了一种非常便捷的方式来处理...
MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!
在对应的SQL查询中,你可以使用嵌套查询或联合查询来获取相关数据,并结合ResultMap进行映射。 2. **一对多关联查询**: 对于一对多关系,我们可以使用`collection`元素。比如`User`表有一对多关系到`Order`表,...
【织梦条件联合查询】是基于织梦内容管理系统(DedeCMS)的一种高级搜索功能,它允许用户根据多个条件组合进行复杂的数据筛选,类似于京东等电商平台的商品搜索功能。这一特性提高了用户在网站上查找特定信息的效率...
本篇文章将重点讲解 MyBatis 中的自关联查询,以“新闻栏目”为例,探讨如何实现一对多的关系。 在新闻系统中,栏目(Category)与新闻(News)通常存在一对多的关系:一个栏目可以包含多个新闻,而一个新闻则属于...
本例程将深入探讨如何在Access中进行多表关联查询,这对于理解数据库设计和数据提取至关重要。"SanYe"可能指的是教程作者或某个特定的编程环境。在这个教程中,我们将学习如何利用Access的查询功能连接多个表格,...
Spring Boot 2 基于 MyBatis 实现多表关联查询 Spring Boot 2 是目前非常流行的 Java 框架,它提供了许多强大的功能,例如自动配置、 starters 机制等。MyBatis 是一个流行的持久层框架,提供了强大的数据库交互...
Oracle 基础查询关联查询练习题中涉及到多种查询类型,包括基础查询、关联查询、分组查询等。下面我们将对每个练习题的知识点进行详细解释。 1. 基础查询 基础查询是指从数据库中检索数据的基本操作。 Oracle 基础...
Oracle SQL 语句多表关联查询 Oracle SQL 语句多表关联查询是数据库管理系统中的一种常见查询方式,它可以从多个表中检索数据,满足业务需求。本文将详细介绍 Oracle SQL 语句多表关联查询的知识点,包括字符串和...
### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...
"Merge Join" Step就是其中之一,它允许用户实现类似SQL中的各种类型关联查询,包括INNER JOIN、LEFT JOIN、RIGHT JOIN以及FULL JOIN。 INNER JOIN是SQL中的一种基本联接类型,它返回两个表中存在匹配的记录。在...
3. **联合查询**(UNION):将两个或更多SELECT语句的结果集合并为一个。注意,所有SELECT语句必须返回相同数量和类型的列。 4. **数据透视表查询**:对数据进行汇总和分析,可以展示不同维度的数据统计,如总计、...
SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言,而多表联合查询是SQL中一种重要的数据检索方法,尤其在处理复杂的数据关联时显得尤为重要。 在关系数据库中,数据通常分散在多个表中,每...
MySQL 多表联合查询教程 在本教程中,我们将学习 MySQL 中的多表联合查询,包括多表插入和多表更新的操作。多表联合查询是指从多个表中检索数据的操作,这种操作在实际应用中非常常见。 什么是多表联合查询 多表...
在处理复杂的数据库关联查询时,MyBatis 提供了多种解决方案,包括一对一、一对多、多对一以及多对多关系的映射。下面将详细讲解这些概念以及如何在 MyBatis 中进行操作。 1. **一对一关联查询(One-to-One)**: ...
sql多表关联查询,三表关联查询
最近在做一个项目涉及到mongoose的关联查询等等,之前做的mysql,postgresql比较多,而mongoose用的都是比较简单的存储数据,简单查询等等。 刚开始涉及ref还是有点小晕的,查询了相关资源,也可以模模糊糊做出来,...