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