• Join 语句


    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
  • 相关阅读:
    windows用户管理与远程管理
    Linux之基础网络配置
    linux之程序包管理
    linux之特殊权限
    设计模式学习笔记——Prototype原型模式
    设计模式学习笔记——Visitor 访问者模式
    XXX is not a function
    终于决定要开始写自己的博客了,先Mark一下
    element ui 与vue跨域通信操作 和框架语法,contentype
    跨域与版本控制
  • 原文地址:https://www.cnblogs.com/enych/p/8024144.html
Copyright © 2020-2023  润新知