多表查询

一、多表合并

①会员累计销售额与总体销售表

1 select '总体销售额' as toall,sum(order_money)
2 from hy_order_20170410
3 union 
4 select member_id,order_money
5 from hy_order_20170410

结果:

二、多表连接

1、笛卡尔连接

  • 连接后的表行为m*n,列为a+b
  • 运用此连接时,要加过滤条件,否则占用内存很大
1 -- 笛卡尔积
2 select *
3 from hy_order_20170410,hy_member_20170410  ;

结果:

2、内连接(inner join)

  • 默认等值连接,保留连接表中的相同属性
1 select *
2 from hy_order_20170410 a 
3 join hy_member_20170410 b on a.member_id=b.id 

结果:

①通过内连接查找姓名、性别、年龄及消费金额的顾客(降序)

1 select a.name
2         ,a.sex
3         ,a.age
4         ,sum(b.order_money)
5 from hy_member_20170410 a
6 inner join hy_order_20170410 b on a.id=b.member_id
7 group by a.name
8 order by sum(b.order_money) desc

结果:

3、外连接

  • 左关联(left join)
    • 左表的数值全部留下,右表留下与左表相同属性值的行
    • 右表没有与左表具有相同属性值时,右表表则为空行
1 select a.name
2         ,a.sex
3         ,a.age
4         ,b.order_money
5 from hy_member_20170410 a
6 left join hy_order_20170410 b on a.id=b.member_id

结果:

 ①通过外连接左关联查找姓名、性别、年龄及消费金额的顾客(降序)

1 -- 通过内连接查找姓名、性别、年龄及消费金额的顾客(降序)
2 select a.name
3         ,a.sex
4         ,a.age
5         ,sum(b.order_money)
6 from hy_member_20170410 a
7 left join hy_order_20170410 b on a.id=b.member_id
8 group by a.name
9 order by sum(b.order_money) desc

结果:

  •  右关联(left join)
    • 右表的数值全部留下,左表留下与右表相同属性值的行
    • 左表没有与右表具有相同属性值时,左表则为空行
1 select a.name
2         ,a.sex
3         ,a.age
4         ,b.order_money
5 from hy_member_20170410 a
6 right join hy_order_20170410 b on a.id=b.member_id

结果:

 ①通过内连接查找姓名、性别、年龄及消费金额的顾客(降序)

1 select a.name
2         ,a.sex
3         ,a.age
4         ,sum(b.order_money)
5 from hy_member_20170410 a
6 right join hy_order_20170410 b on a.id=b.member_id
7 group by a.name
8 order by sum(b.order_money) desc

结果:

4、三表连接

  • 如果左关联时,一般将要统计的数据表放在左边

①统计hy_orderitem_20170410中id的订单金额

1 select a.id
2         ,sum(b.order_money)
3 from hy_orderitem_20170410 a 
4 left join hy_order_20170410 b on a.order_id = b.id
5 left join hy_member_20170410 c on c.id = b.member_id
6 group by a.id

结果:

三个表的基本字段

      

posted on 2020-03-12 15:57  LiErRui  阅读(99)  评论(0)    收藏  举报

导航