数据库开发之子查询案例的详细解析

news/2024/11/29 23:40:26/

1.5 案例

基于之前设计的多表案例的表结构,我们来完成今天的多表查询案例需求。

准备环境

将资料中准备好的多表查询的数据准备的SQL脚本导入数据库中。

  • 分类表:category

  • 菜品表:dish

  • 套餐表:setmeal

  • 套餐菜品关系表:setmeal_dish

需求实现

  1. 查询价格低于 10元 的菜品的名称 、价格 及其 菜品的分类名称

/*查询技巧:明确1:查询需要用到哪些字段菜品名称、菜品价格 、 菜品分类名明确2:查询的字段分别归属于哪张表菜品表:[菜品名称、菜品价格]分类表:[分类名]明确3:如查多表,建立表与表之间的关联菜品表.caategory_id = 分类表.id其他:(其他条件、其他要求)价格 < 10
*/
select d.name , d.price , c.name
from dish AS d , category AS c
where d.category_id = c.idand d.price < 10;

  1. 查询所有价格在 10元(含)到50元(含)之间 且 状态为"起售"的菜品名称、价格及其分类名称 (即使菜品没有分类 , 也要将菜品查询出来)

select d.name , d.price, c.name
from dish AS d left join category AS c on d.category_id = c.id
where d.price between 10 and 50and d.status = 1;

  1. 查询每个分类下最贵的菜品, 展示出分类的名称、最贵的菜品的价格

select c.name , max(d.price)
from dish AS d , category AS c
where d.category_id = c.id
group by c.name;

  1. 查询各个分类下 菜品状态为 "起售" , 并且 该分类下菜品总数量大于等于3 的 分类名称

/*查询技巧:明确1:查询需要用到哪些字段分类名称、菜品总数量明确2:查询用到的字段分别归属于哪张表分类表:[分类名]菜品表:[菜品状态]明确3:如查多表,建立表与表之间的关联菜品表.caategory_id = 分类表.id其他:(其他条件、其他要求)条件:菜品状态 = 1 (1表示起售)分组:分类名分组后条件: 总数量 >= 3
*/
select c.name , count(*)
from dish AS d , category AS c
where d.category_id = c.idand d.status = 1 -- 起售状态
group by c.name  -- 按照分类名分组
having count(*)>=3; -- 各组后筛选菜品总数据>=3

  1. 查询出 "商务套餐A" 中包含了哪些菜品 (展示出套餐名称、价格, 包含的菜品名称、价格、份数)

select s.name, s.price, d.name, d.price, sd.copies
from setmeal AS s , setmeal_dish AS sd , dish AS d
where s.id = sd.setmeal_id and sd.dish_id = d.idand s.name='商务套餐A';

  1. 查询出低于菜品平均价格的菜品信息 (展示出菜品名称、菜品价格)

-- 1.计算菜品平均价格
select avg(price) from dish;    -- 查询结果:37.736842
-- 2.查询出低于菜品平均价格的菜品信息
select * from dish where price < 37.736842;
​
-- 合并以上两条SQL语句
select * from dish where price < (select avg(price) from dish);


http://www.ppmy.cn/news/1285339.html

相关文章

Spring Boot整合GraphQL

RPC选型入门测试系列文章 GraphQL是一种用于API开发的查询语言和运行时环境。它由Facebook开发并于2015年开源。GraphQL的主要目标是提供一种更高效、灵活和易于使用的方式来获取和操作数据。与传统的RESTful API相比&#xff0c;GraphQL允许客户端精确地指定需要的数据&#…

【ESP-NOW 入门(ESP32 with Arduino IDE)】

ESP-NOW 入门(ESP32 with Arduino IDE) 1. 前言2. Arduino集成开发环境3. ESP-NOW 简介3.1 ESP-NOW 支持以下功能:3.2 ESP-NOW 技术还存在以下局限性:4. ESP-NOW 单向通信4.1 一个 ESP32 开发板向另一个 ESP32 开发板发送数据4.2 一个“主”ESP32 向多个 ESP32“slave”发送…

svn外网打不开url地址怎么解决

在家或者出差在外经常会有连接到公司内部SVN服务器的需求&#xff0c; 但是 svn外网打不开url地址怎么解决&#xff1f;如何才能连接到公司内部SVN服务器&#xff1f;今天小编教你一招&#xff0c;在本地SVN服务的内网IP端口用快解析软件添加映射&#xff0c;一步就可以提供让公…

边缘计算网关:重新定义物联网数据处理

随着物联网&#xff08;IoT&#xff09;设备的爆炸式增长&#xff0c;数据处理和分析的需求也在迅速增加。传统的数据处理方式&#xff0c;将所有数据传输到中心服务器进行处理&#xff0c;不仅增加了网络负担&#xff0c;还可能导致数据延迟和安全问题。因此&#xff0c;边缘计…

RabbitMQ消息存储JSON格式反序列化

如果发送消息消息体为实体类对象数据&#xff0c;交换机接收消息经由路由键发送给队列。需要实现数据反序列化操作。实现JSON格式的反序列化操作 Rabbitmq的反序列化接口 MessageConverter&#xff0c;它的实现类有 Jackson2JsonMessageConverter的反序列化实现类&#xff0c…

三路电源互备自投电路

当供电源停电时&#xff0c;主备用电源自动投入运行&#xff0c;当主备用电源断电时&#xff0c;则次备用电源自动投入运行&#xff0c;从而大大提高供电的可靠性。

计算机网络 VLAN

路由器将多个局域网连接起来&#xff0c;而交换机将一个局域网里的设备连接起来。 路由器的端口分配局域网的网段&#xff08;子网网段&#xff09;&#xff0c;局域网的内部设备的ip都在这个网段里&#xff0c;再由交换机将数据派发到目的设备&#xff0c;交换机是按照MAC地址…

FairyGUI-Cocos Creator官方Demo源码解读

博主在学习Cocos Creator的时候&#xff0c;发现了一款免费的UI编辑器FairyGUI。这款编辑器的能力十分强大&#xff0c;但是网上的学习资源比较少&#xff0c;坑比较多&#xff0c;主要学习方式就是阅读官方文档和练习官方Demo。这里博主进行官方Demo的解读。 从gitee上克隆项目…