zoukankan      html  css  js  c++  java
  • sqlserver联合两种多表查询:统计+关联查询

    统计:
    两张表a和b
    a的字段如下:
    a_id,a_name,a_address
    b的字段如下:
    b_id,b_phone,a_id
    我要查询出两条字段的信息 分别是表a中的a_name和表b中的a_id的总数
    比如a表中如果数据是这样子的:
    a_id a_name a_address
    1 me beijing
    2 wo shanghai
    3 he guangzhou
    4 she shenzhen
    5 our hangzhou
    表b中的数据如下:
    b_id b_phone a_id
    1 12345 1
    2 23456 1
    3 88888 1
    4 99999 2
    5 77777 3
    我希望查询出这样的结果:
    名字 数量
    me 3
    wo 1
    he 1
    -----------------------------------------------答
    select a.a_name as 名字,count(b.a_id) as 数量 from a inner join b on a.a_id = b.a_id group by a.a_name

    名字 数量
    me 3
    wo 1
    he 1

    select a.a_name as 名字,count(b.a_id) as 数量 from a left join b on a.a_id = b.a_id group by a.a_name

    名字 数量
    me 3
    wo 1
    he 1
    she 0
    our 0
    来源:百度知道http://zhidao.baidu.com/question/218160255.html

    .............................................................................................................
    关联
    点击数据库的sql窗格

    1  public DataTable selectNotAllowAppClick(int NO)
    2         {
    3             string sql = string.Format("SELECT NO, UserId, TrueName, LeaveTime, LeaveType, AppDays, LeaveDescription,AddTime FROM leaveMessage WHERE NO = @NO");
    4             DataConn conn = new DataConn(conStr);
    5             ArrayList paramlist = new ArrayList();
    6             paramlist.Add(conn.CreateParameter("@NO", NO, DbType.UInt16, 4));
    7             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
    8             return conn.testDataTable(sql, param);
    9         }

    选中全部代码,右击"在编辑器中设计查询",将UserId关联

    再加上where条件语句:     WHERE     (demoUsers.ChineseWord = 'f')

    执行结果如下

    SELECT     AttendanceRecord.AttendanceId, AttendanceRecord.UserId, AttendanceRecord.OnDutyTime, AttendanceRecord.OffDutyTime, 
                          AttendanceRecord.OverTimeStart, AttendanceRecord.OverTimeEnd, AttendanceRecord.RecordTime, AttendanceRecord.ComeLate, 
                          AttendanceRecord.GoEarly, (CASE AttendanceRecord.ComeLate WHEN 1 THEN '' ELSE '' END) AS test
    FROM         AttendanceRecord INNER JOIN
                          demoUsers ON AttendanceRecord.UserId = demoUsers.UserId
    WHERE     (demoUsers.ChineseWord = 'cs')
    
    
  • 相关阅读:
    unity3d 打包个人记录
    Unity3d 协程
    Unity3d 复制文字到剪切板及存储图像到相册
    为什么 redo log 具有 crash-safe 的能力,是 binlog 无法替代的?
    Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?
    深入理解Java虚拟机1——内存区域
    Java源码系列3——LinkedHashMap
    深入理解Java虚拟机2——对象探秘
    高效学习
    WordPress自动代码高亮
  • 原文地址:https://www.cnblogs.com/bkycjj/p/3009655.html
Copyright © 2011-2022 走看看