美文网首页
自关联查询

自关联查询

作者: 杜大个 | 来源:发表于2018-09-06 09:11 被阅读0次

自关联

设计省信息的表结构provinces

id
ptitle

设计市信息的表结构citys

id
ctitle
proid

citys表的proid表示城市所属的省,对应着provinces表的id值

问题:

能不能将两个表合成一张表呢?

思考:

观察两张表发现,citys表比provinces表多一个列proid,其它列的类型都是一样的

意义:

存储的都是地区信息,而且每种信息的数据量有限,没必要增加一个新表,或者将来还要存储区、乡镇信息,都增加新表的开销太大

答案:

定义表areas,结构如下

id
atitle
pid

说明:

因为省没有所属的省份,所以可以pid可以填写为null
城市所属的省份pid,填写省所对应的编号id
这就是自关联,表中的某一列,关联了这个表中的另外一列,但是它们的业务逻辑含义是不一样的,城市信息的pid引用的是省信息的id 在这个表中,结构不变,可以添加区县、乡镇街道、村社区等信息

创建areas表的语句如下:

create table areas( aid int primary key, atitle varchar(20), pid int );

查询一共有多少个省

select count(*) from areas where pid is null;

例1:查询省的名称为“山西省”的所有城市

select city.* from areas as city inner join areas as province on city.pid=province.aid where province.atitle='山西省';

例2:查询市的名称为“广州市”的所有区县

select dis.* from areas as dis inner join areas as city on city.aid=dis.pid where city.atitle='广州市';

总结:

自连接查询其实等同于连接查询,需要两张表,只不过它的左表(父表)和右表(子表)都是自己。做自连接查询的时候,是自己和自己连接,分别给父表和子表取两个不同的别名,然后附上连接条件。

练习: 假想以下场景:某一电商网站想要对站内产品做层级分类,一个类别下面有若干子类,子类下面也会有别的子类。例如数码产品这个类别下面有笔记本,台式机,智能手机等;笔记本,台式机,智能手机又可以按照品牌分类;品牌又可以按照价格分类,等等。也许这些分类会达到一个很深的层次,呈现一种树状的结构。那么这些数据要怎么在数据库中表示呢?我们可以在数据库中创建两个字段来存储id和类别名称,使用第三个字段存储类别的子类或者父类的id,最后通过自连接去查询想要的结果。

创建表: create table tdb_cates( id smallint primary key auto_increment, cate_name varchar(20) not null, parent_id smallint not null );

相关文章

  • 自关联查询

    自关联 设计省信息的表结构provinces 设计市信息的表结构citys citys表的proid表示城市所属的...

  • MySql查询-自关联

    设计省信息的表结构provincesidptitle 设计市信息的表结构citysidctitleproid ci...

  • 2018-08-15 视图 事务 自关联查询

    自关联查询 自关联:自连接查询其实等同于连接查询, 需要两张表,只不过它的左表(父表)和右表(子表) 都是自己。做...

  • mysql连接查询,自关联,子查询

    mysql支持三种类型的连接查询,分别为:内连接查询,左连接查询,右连接查询 内连接查询: 左连接查询: 右连接查...

  • MySQL查询语句

    目录 一、查询准备 二、条件查询 三、排序 四、聚合函数 五、分组 六、分页 七、连接查询 八、自关联 九、子查询...

  • Elasticsearch-(parent-child) 查询

    Elasticsearch 版本 7.6.2 //测试自关联查询 PUT my-index { "settings...

  • 数据库自关联,视图,事务

    自关联:自连接查询其实等同于连接查询,需要两张表,只不过它的左表(父表)和右表(子表)都是自己。做自连接查询的时候...

  • python面试题01

    1、什么是多表关联查询,有几种多表关联的查询方式,分别是什么? 多表关联查询概念: 多表关联查询分类:1.1内连接...

  • 关联关系查询(第一讲)

    关联查询 当查询内容涉及到具有关联关系的多个表时,就需要使用关联查询。根据表与表之间的关联关系的不同,关联查询分为...

  • 自关联查询 视图 事物

    自关联 自连接查询其实等同于连接查询,只不过它需要两张表,只不过它的左表(父表)和右表(子表)都是自己。做自连接查...

网友评论

      本文标题:自关联查询

      本文链接:https://www.haomeiwen.com/subject/mxytgftx.html