码迷,mamicode.com
首页 > 其他好文 > 详细

join and group

时间:2017-12-10 14:34:54      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:arc   技术   左外连接   not   就是   建表   去除   ini   reference   

1.创建表

首先创建两个表 category(种类表),product(商品表),并向其中插入记录

create table category(
    categoryId int auto_increment,
    categoryName varchar(10) not null,
    primary key(categoryId) 
);

  

技术分享图片

create table product(
      productId int primary key auto_increment, 
      productName varchar(10) not null,
      categoryId int,
      price int,
      constraint pro_cat foreign key (categoryId) references category(categoryId)
);

  

技术分享图片

2.笛卡尔积

笛卡尔积其实就是将所有记录全部罗列出来,即使字段为null也会出现在查询结果中

技术分享图片

3.内连接

内连接就是去除笛卡尔积中为null的记录

技术分享图片

4.左外连接

查询每件商品的种类,即使商品种类为null也会出现在查询结果中,因为是左外连接,所以product中全部记录都会出现的,因此productId=4,categoryId=null这条记录不会被剔除

技术分享图片

5.右外连接

查询product表中每件商品的种类,因为是右外连接,所以category表中所有记录都会出现,但是productId=4这条记录categoryId=null,所以结果中不会有这条记录

技术分享图片

6.Group by

1.分组显示左外连接查询product的商品信息,但是因为lining与nike的categoryId相同,所以只显示了一个

技术分享图片

2.继续查询,但是要显示每种categoryId对应的product数量

技术分享图片

7.实例

1.查询每个分类中最便宜的商品的categoryId,categoryName,price

技术分享图片

2.查询每个分类中最便宜的商品的categoryId,categoryName,productName,price,但是productName与price并没有对应......

技术分享图片

3.我们将每类商品最小的price对应的categoryId与category.categoryId对比就可以找到与之对应的商品名称

技术分享图片

4.这时再加一个限定条件,将price不是最小值得商品剔除

技术分享图片

5.再进一步美化,我们只需要查询每种商品中最便宜商品的所有信息以及种类名即可

技术分享图片

join and group

标签:arc   技术   左外连接   not   就是   建表   去除   ini   reference   

原文地址:http://www.cnblogs.com/Hangtutu/p/8012630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!