select * from books as A join (select * from Orders) as B on A.BookId = B.BookId  

select  A.BookId,Authorname,title,Address,Num  from books A right join (select  *  from Orders) as B on A.BookId = B.BookId 
存储过程 jon
exec sp_executesql N'SELECT
[Extent1].[OrderId] AS [OrderId],
[Extent1].[Address] AS [Address],
[Extent1].[Num] AS [Num],
[Extent2].[BookId] AS [BookId],
[Extent2].[AuthorName] AS [AuthorName],
[Extent2].[Title] AS [Title]
FROM [dbo].[Orders] AS [Extent1]
INNER JOIN [dbo].[books] AS [Extent2] ON [Extent1].[BookId] = [Extent2].[BookId]
WHERE [Extent1].[BookId] = @p__linq__0',N'@p__linq__0 int',@p__linq__0=1
 //使用join连接   //查询订单中的指定Bookid的数据  join  图书表中的指定bookid的数据
var data = db.Order.Where(x => x.BookId == id).Join(db.Book, s => s.BookId, j => j.BookId, (s, j) => new
{
Address = s.Address,
Num = s.Num,
OrderId = s.OrderId,
BookId = j.BookId,
AuthorName = j.AuthorName,
Title = j.Title
}); ViewBag.Data = data;
return View();//根据图书id查找订单

读取数据

 @foreach (var i in ViewBag.Data)
{
<tr> <td>@i.GetType().GetProperty("Title").GetValue(i, null)</td>
<td>@i.GetType().GetProperty("AuthorName").GetValue(i, null)</td>
<td>@i.GetType().GetProperty("Address").GetValue(i, null)</td>
<td>@i.GetType().GetProperty("Num").GetValue(i, null)</td>
<td>
<a onclick="del(this)">删除</a>
</td>
</tr>
}

var model = db.Database.SqlQuery<类>("exec 存储过程名字 @type,@town,@village", paras).ToList(); 执行存储过程

var data = db.Database.SqlQuery< 类 >("select * ..... ").ToList();执行sql语句

var  x = db.Database.ExecuteSqlCommand("delete from AAA where id in (select id from BBB where id="+id+")"); 执行 语句 返回受影响的行数

use my_temp

CREATE TABLE [dbo].[A](
[A_Id] [int] IDENTITY(1,1) primary key NOT NULL, --自增1;从1开始 设置为主键
[B_Id] [int] NOT NULL, --外键=B表主键
[C_Id] [int] NOT NULL, --外键=C表主键
[A_type] [nvarchar](50) NOT NULL, --类型
)
CREATE TABLE [dbo].[B](
[B_Id] [int] IDENTITY(1,1) primary key NOT NULL, --自增1;从1开始 设置为主键
[B_type] [nvarchar](50) NOT NULL, --类型
)
CREATE TABLE [dbo].[C](
[C_Id] [int] IDENTITY(1,1) primary key NOT NULL, --自增1;从1开始 设置为主键
[C_type] [nvarchar](50) NOT NULL, --类型
)
--插入语句 A表数据
INSERT INTO [dbo].[A]([B_Id],[C_Id],[A_type])VALUES(1,1,'A类型')
INSERT INTO [dbo].[A]([B_Id],[C_Id],[A_type])VALUES(2,2,'A类型1')
INSERT INTO [dbo].[A]([B_Id],[C_Id],[A_type])VALUES(3,3,'A类型2')
select * from A
--插入B表
INSERT INTO [dbo].[B]([B_type])VALUES('B类型')
INSERT INTO [dbo].[B]([B_type])VALUES('B类型1')
INSERT INTO [dbo].[B]([B_type])VALUES('B类型2')
--插入C表
INSERT INTO [dbo].[C]([C_type])VALUES('C类型')
INSERT INTO [dbo].[C]([C_type])VALUES('C类型1')
INSERT INTO [dbo].[C]([C_type])VALUES('C类型2') --join 查询; 两表 join 查询
SELECT
*
FROM A
LEFT JOIN B
ON
A.B_Id=B.B_Id;

--join 查询; 三表 join 查询
SELECT
*
FROM A LEFT JOIN B
ON
A.B_Id=B.B_Id
LEFT JOIN C
ON
A.A_Id= C.C_Id;



--其他关系

以上是 AA表  BB表  CC表;

1.查询 BB表中AA_Id数量 和 BB_NUM的和

语句

select AA_Id, COUNT(AA_Id),SUM(BB_NUM)BB_NUM from BB  where 1=1
group by AA_Id --以AA_Id分组

结果

2.再把结果与AA表关联

语句

select AA.AA_Id,F.数量,F.BB_NUM from AA
left join
(select AA_Id, COUNT(AA_Id)数量,SUM(BB_NUM)BB_NUM from BB where 1=1 group by AA_Id ) F
on
AA.AA_Id=F.AA_Id

结果

查询  CC表中AA_Id数量 和 CC_NUM的和

--查询 CC表中
select AA_Id, COUNT(AA_Id),SUM(CC_NUM)CC_NUM from CC where 1=1 group by AA_Id

三表关联

语句

select AA.AA_Id,F.ID数量,F.BB_NUM,G.ID数量,G.CC_NUM from AA
left join
(select AA_Id, COUNT(AA_Id)ID数量,SUM(BB_NUM)BB_NUM from BB where 1=1 group by AA_Id ) F
on
AA.AA_Id = F.AA_Id
left join
(select AA_Id, COUNT(AA_Id)ID数量,SUM(CC_NUM)CC_NUM from CC where 1=1 group by AA_Id ) G
on
AA.AA_Id = G.AA_Id


语句

use my_temp

CREATE TABLE [dbo].[AA](
[AA_Id] [int] IDENTITY(1,1) primary key NOT NULL, --自增1;从1开始 设置为主键
[AA_type] [nvarchar](50) NOT NULL, --类型
)
CREATE TABLE [dbo].[BB](
[BB_Id] [int] IDENTITY(1,1) primary key NOT NULL, --自增1;从1开始 设置为主键
[AA_Id] [int] NOT NULL,
[BB_NUM][int] NOT NULL, --数量
)
CREATE TABLE [dbo].[CC](
[CC_Id] [int] IDENTITY(1,1) primary key NOT NULL, --自增1;从1开始 设置为主键
[AA_Id] [int] NOT NULL,
[CC_NUM][int] NOT NULL, --数量
)
--END --插入语句 AA表数据
--INSERT INTO [dbo].[AA]([AA_type])VALUES('1类型')
--INSERT INTO [dbo].[AA]([AA_type])VALUES('2类型')
--INSERT INTO [dbo].[AA]([AA_type])VALUES('3类型')
--INSERT INTO [dbo].[AA]([AA_type])VALUES('4类型')
--INSERT INTO [dbo].[AA]([AA_type])VALUES('5类型')
--END
--插入B表
--INSERT INTO [dbo].[BB]([AA_Id],[BB_NUM])VALUES('1',5)
--INSERT INTO [dbo].[BB]([AA_Id],[BB_NUM])VALUES('1',4)
--INSERT INTO [dbo].[BB]([AA_Id],[BB_NUM])VALUES('2',3)
--INSERT INTO [dbo].[BB]([AA_Id],[BB_NUM])VALUES('2',2)
--INSERT INTO [dbo].[BB]([AA_Id],[BB_NUM])VALUES('3',1)
--END
--插入CC表
--INSERT INTO [dbo].[CC]([AA_Id],[CC_NUM])VALUES('1',5)
--INSERT INTO [dbo].[CC]([AA_Id],[CC_NUM])VALUES('2',4)
--INSERT INTO [dbo].[CC]([AA_Id],[CC_NUM])VALUES('2',3)
--INSERT INTO [dbo].[CC]([AA_Id],[CC_NUM])VALUES('2',2)
--INSERT INTO [dbo].[CC]([AA_Id],[CC_NUM])VALUES('3',1)
--END --查询 AA 表中数据
select * from AA
select * from BB
select * from CC

其他

第一个表 join 第二个表

语句

select * from (
select A_Id,A_type from A where A_Id=1
)A
Left join
(select top 2 AA_Id,BB_NUM from BB)C
on
A.A_Id = C.AA_Id

父数据 有时间,子数据 无时间

select * from Temp

--获得最新时间 A 类型的价格

select * from(
select 类型,max(时间) as 最新时间 from temp group by 类型
)A
left Join
(
select * from Temp
)B
ON
A.最新时间 = B.时间

---------------------------------------- 查询重复数量

         select * from (  select 工号,count(*) AS 数量 from (
select 工号 ,姓名 from dbo.Base移动用户
)C
group by 工号 )D
where 数量>1

Join 语句的更多相关文章

  1. 转:画图解释 SQL join 语句

    画图解释 SQL join 语句 我认为 Ligaya Turmelle 的关于SQL联合(join)语句的帖子对于新手开发者来说是份很好的材料.SQL 联合语句好像是基于集合的,用韦恩图来解释咋一看 ...

  2. [转]MySQL update join语句

    原文地址:https://www.jianshu.com/p/f99665266bb1 在本教程中,您将学习如何使用MySQL UPDATE JOIN语句来执行跨表更新.我们将逐步介绍如何使用INNE ...

  3. SQL Join 语句

    SQL Join 语句 SQL 中每一种连接操作都包括一个连接类型和连接条件. 连接类型 决定了如何处理连接条件不匹配的记录. 连接类型 返回结果 inner join 只包含左右表中满足连接条件的记 ...

  4. SQL中合并两个表的JOIN语句

    SQL里有四种JOIN语句用于根据某条件合并两个表: (INNER) JOIN: 交集 LEFT (OUTER) JOIN: 左表数据全包括,右表对应的如果没有就是NULL RIGHT (OUTER) ...

  5. 你知道如何优化Join语句吗?

    join语句的两种算法,分别是:NLJ和BNL 测试数据: create table t1(id int primary key, a int, b int, index(a)); create ta ...

  6. 35 | join语句怎么优化?

    在上一篇文章中,我和你介绍了 join 语句的两种算法,分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL). 我们发现在使用 N ...

  7. mysql join语句的执行流程是怎么样的

    mysql join语句的执行流程是怎么样的 join语句是使用十分频繁的sql语句,同样结果的join语句,写法不同会有非常大的性能差距. select * from t1 straight_joi ...

  8. SQLSERVER不带JOIN的语句与带JOIN语句的区别

    //1.连接两个表查询 SELECT * FROM table1 t1,table2 t2 //2.连接两个表查询 SELECT * FROM table1 join table2 on table1 ...

  9. 画图解释 SQL join 语句

    转:http://blog.jobbole.com/40443/ 本文由 伯乐在线 - 奇风余谷 翻译.未经许可,禁止转载!英文出处:Jeff Atwood.欢迎加入翻译组. 我认为 Ligaya T ...

  10. Mysql join语句解析

    1. 右连接(right join, right outer join) 解释:以右表(Sys_Employee)为准,而左表(Sys_Department)中的记录只有当其DepartmentId在 ...

随机推荐

  1. 火柴棒等式(2008年NOIP全国联赛提高组)

    题目描述 Description 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: ...

  2. 并行输入\输出控制器之我见(PIO)

    中断信号FIQ及IRQ0到IRQn一般通过PIO控制器复用.但是,由于PIO控制器对于输入无效且中断线(FIQ或IRQ)仅作为输入,因此不必为中断分配I/0线.          电源管理控制器控制P ...

  3. HDU 3666

    此题不难,不等式很空易就列出来了,只是要把它转化成减法形式..卡在这了... 其实取一个log对数就好了...要记住这个技巧.用基于dfs的spfa.. #include<iostream> ...

  4. 一篇文章贯穿ACE各种发送接收组件 1.2版

    TCP通信过程介绍 首先介绍一下socket通信的基本过程:这里先如果有两个家伙在通信,一个是S.还有一个叫C (1)S打开port监听本地的port看看有没有人来连接: (2)与此同一时候C试图去连 ...

  5. c/c++ 数据结构之位图(bitmap)具体解释

    1.  概述 位图(bitmap)是一种很经常使用的结构,在索引.数据压缩等方面有广泛应用. 本文介绍了位图的实现方法及其应用场景. 2. 位图实现 2014728101320" alt=& ...

  6. poj和hdu部分基础算法分类及难度排序

    最近想从头开始刷点基础些的题,正好有个网站有关于各大oj的题目分类(http://www.pythontip.com/acm/problemCategory),所以写了点脚本把hdu和poj的一些题目 ...

  7. Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)

    1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  8. java多线程设置优先级

    package com.itbuluoge.mythread; class SimpleThread extends Thread { private int priority; public Sim ...

  9. Spring源代码解析和配置文件载入

    Spring类的继承结构图: Spring运用了大量的模板方法模式和策略模式,所以各位看源代码的时候,务必留意,每个继承的层次都有不同的作用.然后将同样的地方抽取出来,依赖抽象将不同的处理依照不同的策 ...

  10. velocity简单样例

    velocity简单样例整体实现须要三个步骤,详细例如以下: 1.创建一个Javaproject 2.导入须要的jar包 3.创建须要的文件 ============================= ...