搜索
首页数据库mysql教程数据库设计问题 – SQL_MySQL

要求:a 表:`id`, `name` ; 作为词表,存放不同的词;b 表:`id`, `attr` ; 作为属性表,存放各种属性;其中,一个词可以有不同的多个属性;而每个词的属性的个数也不一定相同;c 表:`id`, `aid`, `bid` ; 作为关系表,存放每个词的对应关系;写出 SQL 语句,来得到每个词拥有属性总数的逆向(DESC)排序:

各种表的信息如下:

mysql> DESC `a`; DESC `b`; DESC `c`;+-------+---------------------+------+-----+---------+----------------+| Field | Type                | Null | Key | Default | Extra          |+-------+---------------------+------+-----+---------+----------------+| id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || name  | varchar(255)        | NO   |     | NULL    |                |+-------+---------------------+------+-----+---------+----------------+2 rows in set (0.00 sec)+-------+---------------------+------+-----+---------+----------------+| Field | Type                | Null | Key | Default | Extra          |+-------+---------------------+------+-----+---------+----------------+| id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || attr  | varchar(255)        | NO   |     | NULL    |                |+-------+---------------------+------+-----+---------+----------------+2 rows in set (0.01 sec)+-------+---------------------+------+-----+---------+----------------+| Field | Type                | Null | Key | Default | Extra          |+-------+---------------------+------+-----+---------+----------------+| id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || aid   | int(8)              | NO   |     | NULL    |                || bid   | int(8)              | NO   |     | NULL    |                |+-------+---------------------+------+-----+---------+----------------+3 rows in set (0.00 sec)

我们预先放入测试的数据,如下:

mysql> SELECT * FROM `a`; SELECT * FROM `b`; SELECT * FROM `c`;+----+------+| id | name |+----+------+|  1 | a    ||  2 | b    ||  3 | c    ||  4 | d    ||  5 | e    |+----+------+5 rows in set (0.00 sec)+----+------+| id | attr |+----+------+|  1 | 111  ||  2 | 112  ||  3 | 113  ||  4 | 123  ||  5 | 221  ||  6 | 231  ||  7 | 252  ||  8 | 278  ||  9 | 292  || 10 | 256  || 11 | 578  || 12 | 653  || 13 | 521  || 14 | 502  |+----+------+14 rows in set (0.00 sec)+----+-----+-----+| id | aid | bid |+----+-----+-----+|  1 |   1 |   1 ||  2 |   1 |   2 ||  3 |   1 |   4 ||  4 |   1 |   7 ||  5 |   2 |   8 ||  6 |   2 |  11 ||  7 |   3 |   3 ||  8 |   3 |   5 ||  9 |   3 |   6 || 10 |   4 |   9 || 11 |   4 |  10 || 12 |   5 |  12 || 13 |   5 |  13 || 14 |   5 |  14 |+----+-----+-----+14 rows in set (0.00 sec)

首先执行下列语句:

mysql> SELECT COUNT(`bid`) AS `attrcounts` FROM `c` GROUP BY `aid` ORDER BY `attrcounts` DESC;+------------+| attrcounts |+------------+|          4 ||          3 ||          3 ||          2 ||          2 |+------------+5 rows in set (0.00 sec)

进而,我们再连表:

mysql> SELECT a.name, COUNT(c.bid) AS `attrcounts` FROM `c` LEFT JOIN `a` ON a.id = c.aid GROUP BY c.aid ORDER BY `attrcounts` DESC;+------+------------+| name | attrcounts |+------+------------+| a    |          4 || c    |          3 || e    |          3 || b    |          2 || d    |          2 |+------+------------+5 rows in set (0.00 sec)

于是,我们得到了结果;

-------

补充一些基础知识:

如何修改已有表的列:http://www.w3school.com.cn/sql/sql_alter.asp

GROUP BY 相关知识:http://www.w3school.com.cn/sql/sql_groupby.asp

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
数据库设计中的冗余字段问题:PHP编程中的最佳实践数据库设计中的冗余字段问题:PHP编程中的最佳实践Jun 22, 2023 am 11:02 AM

随着互联网的普及和应用场景的不断增加,数据库设计成为了极其重要的一个问题。而在数据库设计中,冗余字段是一个很重要的问题。冗余字段是指在设计数据库时,出现了重复或不必要的字段。虽然冗余字段可以在一定程度上提高查询效率和速度,但同时也会浪费存储空间和加大维护难度,甚至会影响数据的一致性和安全性。因此,在PHP编程中,应该遵循一定的最佳实践,来解决冗余字段带来的问

利用MongoDB技术开发中遇到的数据库设计问题的解决方案探究利用MongoDB技术开发中遇到的数据库设计问题的解决方案探究Oct 08, 2023 pm 05:53 PM

利用MongoDB技术开发中遇到的数据库设计问题的解决方案探究摘要:随着大数据和云计算的快速发展,数据库设计在软件开发中显得尤为重要。本文将讨论开发过程中常遇到的数据库设计问题,并通过具体代码示例来介绍MongoDB的解决方案。引言:在软件开发过程中,数据库设计是一个关键的环节。传统的关系型数据库在处理大规模数据时存在一些性能和可扩展性的问题。而MongoD

Golang学习之Web应用程序的数据库设计实践Golang学习之Web应用程序的数据库设计实践Jun 24, 2023 am 10:33 AM

Golang是一种由Google开发的编程语言,其使用简单、性能优越和跨平台特性使得它在现代Web应用程序开发中越来越受到欢迎。在Web应用程序开发中,数据库设计是非常重要的一部分。在这篇文章中,我们将介绍如何使用Golang开发Web应用程序时进行数据库设计实践。选择数据库首先,我们需要选择一个合适的数据库。Golang支持多种数据库,例如MySQL、Po

PHP和MySQL数据库的设计与应用PHP和MySQL数据库的设计与应用Jun 20, 2023 am 09:27 AM

PHP和MySQL是一对强大的组合,具有广泛的应用。在互联网行业,PHP和MySQL已经成为了技术栈的标配,大量的网站、Web应用、后台管理系统等应用都采用了这对组合。本文将探讨PHP和MySQL数据库的设计与应用,并介绍一些最佳实践。一、PHP和MySQL数据库的优势PHP是一种开源的、跨平台的、服务端的Web编程语言,拥有广泛的应用场景。MySQL是一种

MySQL 复合主键在数据库设计中的应用详解MySQL 复合主键在数据库设计中的应用详解Mar 15, 2024 am 11:33 AM

MySQL复合主键在数据库设计中的应用详解MySQL复合主键是指由多个字段组成的主键,通过组合这些字段的值来唯一标识一条记录。在数据库设计中,复合主键的应用非常广泛,特别是在需要唯一标识某个实体的情况下。本文将详细介绍MySQL复合主键的概念、设计原则以及具体的代码示例。一、MySQL复合主键的概念在MySQL中,主键是用来唯一标识表中的每一行数据的字段

数据库设计的主要步骤是什么数据库设计的主要步骤是什么Dec 29, 2020 pm 04:13 PM

步骤:1、需求收集和分析,得到数据字典和数据流图;2、对用户需求综合、归纳与抽象,形成概念模型;3、将概念结构转换为数据模型;4、设计数据库的物理结构;5、建立数据库,编制与调试应用程序,组织数据入库;6、对数据库系统进行评价、调整与修改。

Golang语言特性解读:ORM框架与数据库设计Golang语言特性解读:ORM框架与数据库设计Jul 17, 2023 pm 11:33 PM

Golang语言特性解读:ORM框架与数据库设计引言:近年来,随着云计算的发展和大数据的兴起,数据库的应用越来越广泛。为了更方便地操作数据库,ORM(对象关系映射)框架应运而生。而Golang作为一门现代化的编程语言,具有强大的并发能力和高效的性能。本文将介绍Golang语言中使用ORM框架进行数据库设计的方法,并附上相关的代码示例。一、ORM框架ORM(O

如何在PHP中实现商品多规格SKU的数据库设计如何在PHP中实现商品多规格SKU的数据库设计Sep 06, 2023 am 09:03 AM

如何在PHP中实现商品多规格SKU的数据库设计在电商平台中,商品规格是一个非常重要的概念。商品规格可以理解为商品的不同属性和特征,例如尺寸、颜色、重量等。在实际应用中,针对不同的规格,我们往往需要为每一种组合设置不同的价格、库存和图片等信息。这就需要我们设计一个合适的数据库结构来存储和管理商品的规格及其相关信息。本文将介绍如何在PHP中实现商品多规格SKU的

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器