SQL99 返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(二)

这篇具有很好参考价值的文章主要介绍了SQL99 返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

描述

有表OrderItems代表订单商品信息表,prod_id为产品id;Orders表代表订单表有cust_id代表顾客id和订单日期order_date;Customers表含有cust_email 顾客邮件和cust_id顾客id

OrderItems表

prod_id order_num
BR01 a0001
BR01 a0002
BR02 a0003
BR02 a0013

Orders表

order_num cust_id order_date
a0001 cust10 2022-01-01 00:00:00
a0002 cust1 2022-01-01 00:01:00
a0003 cust1 2022-01-02 00:00:00
a0013 cust2 2022-01-01 00:20:00

Customers表代表顾客信息,cust_id为顾客id,cust_email为顾客email

【问题】返回购买 prod_id 为BR01 的产品的所有顾客的电子邮件(Customers 表中的 cust_email),结果无需排序。

提示:涉及到 SELECT 语句,最内层的从 OrderItems 表返回 order_num,中间的从 Customers 表返回 cust_id,但是必须使用 INNER JOIN 语法。

【示例结果】返回顾客email cust_email

cust_email
cust10@cust.com
cust1@cust.com

【示例解析】 

产品id为BR01的订单a0001和a002的下单顾客cust10和cust1的顾客email cust_email分别是:cust10@cust.com 、cust1@cust.com

示例1

输入:

DROP TABLE IF EXISTS `OrderItems`;
  CREATE TABLE IF NOT EXISTS `OrderItems`(
    prod_id VARCHAR(255) NOT NULL COMMENT '产品id',
    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号'
  );
  INSERT `OrderItems` VALUES ('BR01','a0001'),('BR01','a0002'),('BR02','a0003'),('BR02','a0013');

  DROP TABLE IF EXISTS `Orders`;
  CREATE TABLE IF NOT EXISTS `Orders`(
    order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
    cust_id VARCHAR(255) NOT NULL COMMENT '顾客id',
    order_date TIMESTAMP NOT NULL COMMENT '下单时间'
  );
  INSERT `Orders` VALUES ('a0001','cust10','2022-01-01 00:00:00'),('a0002','cust1','2022-01-01 00:01:00'),('a0003','cust1','2022-01-02 00:00:00'),('a0013','cust2','2022-01-01 00:20:00');

DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(
    cust_id VARCHAR(255) NOT NULL COMMENT '顾客id',
    cust_email VARCHAR(255) NOT NULL COMMENT '顾客email'
  );
INSERT `Customers` VALUES ('cust10','cust10@cust.com'),('cust1','cust1@cust.com'),('cust2','cust2@cust.com');

复制输出:

cust10@cust.com
cust1@cust.com

复制

《SQL必知必会(第5版)》独家授权

答案

该题有2个需要注意的点,第一个:customers表没有列出,但是我们需要使用到;第二个:提示中说到必须使用inner join文章来源地址https://www.toymoban.com/news/detail-421698.html

select t3.cust_email
from OrderItems t1 
inner join Orders t2 on t1.order_num=t2.order_num
inner join Customers t3 on t2.cust_id=t3.cust_id
where t1.prod_id='BR01'

到了这里,关于SQL99 返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL基础篇补充 | 多表查询中使用SQL99实现7种JOIN操作、SQL99语法新特性

    目录 一:多表查询中使用SQL99实现7种JOIN操作  二:SQL99语法新特性 1. 自然连接Natural 2. USING连接 在多表查询中,除了遇到最多的内连接、左外连接和右外连接,还有其它的连接方式;接下来就聊聊其它的连接方式,如下图:  ​​​​​​ 并且在正式讲解之前,需要先了解

    2024年02月03日
    浏览(46)
  • 【Windows系统】产品ID、设备ID等系统参数

    系统:Windows Server 2012 R2 1、Windows 产品ID生成机制 Windows安装密钥是生成Windows产品ID的基础,大家可以在桌面上右键我的电脑属性即可看到。产品ID 由20个字符组成,排列方式如下:AAAAA-BBB-CCCCCCC-DDEEE。其中, AAAAA——为产品编号,比如55661为Windows XP 专业版,89580为Windows Vista旗

    2024年02月12日
    浏览(40)
  • vmware 使用scsi_id 获取ID返回空

    /usr/lib/udev/scsi_id -g -u -d --whitelisted --replace-whitespace --device=/dev/sdb2 结果返回是空的,根本的原因是 虚拟机的设置问题。 修改虚拟机的配置文件,vmx后缀的那个:例如 CentOS 7 64 位.vmx 重启虚拟机,再次执行,就有结果了 /usr/lib/udev/scsi_id -g -u -d --whitelisted --replace-whitespace --device

    2024年02月04日
    浏览(37)
  • [SQL智慧航行者] - 用户购买商品推荐

    话不多说, 先看数据表信息. employee 表, 包含所有员工信息, 每个员工有其对应的 id, salary 和 departmentid. 话不多说, 再看需求~ 编写一个 sql 查询,找出每个部门工资最高的员工。 话不多说, 进行拆解~ 最后给大家介绍一下我这边的创建数据表和插入数据的操作步骤, 想要自己测试

    2024年02月13日
    浏览(43)
  • Mybatis 批量新增 只返回第一主键ID 其他返回null

    出现 问题 是加 on duplicate key update 受了影响, 去掉 on duplicate key update代码 ON DUPLICATE key update是根据索引字段是否重复来判断是否执行,如果重复则执行update,否则则执行insert。 优先级主键唯一索引 当主键重复时则执行update 当主键不重复,唯一索引重复时也执行update 当主键

    2024年02月16日
    浏览(39)
  • 「SQL面试题库」 No_65 用户购买平台

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2024年02月05日
    浏览(37)
  • 「SQL面试题库」 No_99 顾客的可信联系人数量

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2024年02月09日
    浏览(37)
  • 获取harbor某个项目下所有镜像及 ID

    需求:把harbor某个仓库组下的所有镜像名字及镜像ID收集出来; 镜像仓库为使用Docker-compose快速部署。 注意:所收集到的镜像有多个tag的话,脚本是根据tag的创建时间,取最新的tag。 于是编写如下脚本: 修改完成后,保存退出,并进行执行,执行完成后,会在当前目录生成

    2024年02月16日
    浏览(30)
  • MySQL数据库干货_16—— SQL99标准中的查询

    SQL99标准中的查询 MySQL5.7 支持部分的SQL99 标准。 SQL99中的交叉连接(CROSS JOIN) 示例: 使用交叉连接查询 employees 表与 departments 表。 SQL99中的自然连接(NATURAL JOIN) 自然连接 连接只能发生在两个表中有相同名字和数据类型的列上。如果列有相同的名字,但数据类型不同,NATURAL J

    2024年02月06日
    浏览(63)
  • MySQL根据父节点id查询所有子节点信息

    替换内容: table_demo 替换成对应表名 pid 替换成父id的命名 id 替换成关联id的命名 state 数据状态(自定义条件,比如:数据是否可用) code 替换成要查询的 入参id值 示例: 注: 如出现 mysql中的“非法混合排序规则”错误,查看字符集和排序规则,或者添加 COLLATE utf8mb4_gener

    2024年02月03日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包