当前位置: 首页 > news >正文

Postgresql基础实践教程(二)

十三、查询会员的预订开始时间

题目

如何列出名为"David Farrell"的会员的所有预订开始时间?

预期结果

starttime
2012-09-18 09:00:00
2012-09-18 17:30:00
2012-09-18 13:30:00
2012-09-18 20:00:00
2012-09-19 09:30:00
2012-09-19 15:00:00
2012-09-19 12:00:00
2012-09-20 15:30:00
2012-09-20 11:30:00
2012-09-20 14:00:00
2012-09-21 10:30:00
2012-09-21 14:00:00
2012-09-22 08:30:00
2012-09-22 17:00:00
2012-09-23 08:30:00
2012-09-23 17:30:00
2012-09-23 19:00:00
2012-09-24 08:00:00
2012-09-24 16:30:00
2012-09-24 12:30:00
2012-09-25 15:30:00
2012-09-25 17:00:00
2012-09-26 13:00:00
2012-09-26 17:00:00
2012-09-27 08:00:00
2012-09-28 11:30:00
2012-09-28 09:30:00
2012-09-28 13:00:00
2012-09-29 16:00:00
2012-09-29 10:30:00
2012-09-29 13:30:00
2012-09-29 14:30:00
2012-09-29 17:30:00
2012-09-30 14:30:00

[答案与解析]

selectbks.starttimefromcd.bookings bksinnerjoincd.members memsonmems.memid=bks.memidwheremems.firstname='David'andmems.surname='Farrell';

INNER JOIN(内连接)是最常用的连接方式。它的作用是根据连接条件把两张表组合起来——在这个例子里,我们会拿 members 表中的每个会员 ID 去 bookings 表中找匹配的记录。找到匹配后,就会返回一行包含两张表数据的组合记录。
注意这里给每张表都起了个别名(bks 和 mems)。这么做有两个好处:一是写起来方便,二是如果同一张表要被连接多次,就能区分不同次连接产生的列。
先别管 SELECT 和 WHERE 子句,咱们重点看看 FROM 语句生成了什么。之前的例子里,FROM 后面就是简单的一张表,但现在呢?是另一张表这张表是由 bookings 和 members 两张表组合而成的。下面能看到连接后的部分输出结果:

对于 members 表里的每个会员,连接操作都会在 bookings 表中找出所有匹配的会员 ID。每找到一个匹配,就会生成一行,把 members 表和 bookings 表的对应行拼在一起。
显然,光这样出来的信息太多了,实际问题都需要进一步筛选。在咱们的查询里,用 SELECT 子句开头部分来选需要的列,用 WHERE 子句来筛选行,如下图所示:

这样就能找到 David 的预订记录了总的来说,建议大家记住一点:FROM 子句的输出本质上就是一张大表,然后你从里面筛选出需要的信息。听起来可能觉得效率不高,但别担心,数据库底层可聪明了,不会真这么笨 😃.
最后提一下:内连接有两种写法。我给大家展示的是我个人偏好的那种,跟其他连接类型的写法更一致。不过你也经常会看到下面这种写法:

selectbks.starttimefromcd.bookings bks,cd.members memswheremems.firstname='David'andmems.surname='Farrell'andmems.memid=bks.memid;

这种写法和标准答案功能完全一样。如果你觉得这种写法更顺手,用它也完全没问题。

十四、查询网球场的预订开始时间

题目

如何列出 2012-09-21 这一天网球场的预订开始时间?返回开始时间和设施名称的配对列表,按时间排序。

预期结果

startname
2012-09-21 08:00:00Tennis Court 1
2012-09-21 08:00:00Tennis Court 2
2012-09-21 09:30:00Tennis Court 1
2012-09-21 10:00:00Tennis Court 2
2012-09-21 11:30:00Tennis Court 2
2012-09-21 12:00:00Tennis Court 1
2012-09-21 13:30:00Tennis Court 1
2012-09-21 14:00:00Tennis Court 2
2012-09-21 15:30:00Tennis Court 1
2012-09-21 16:00:00Tennis Court 2
2012-09-21 17:00:00Tennis Court 1
2012-09-21 18:00:00Tennis Court 2

[答案与解析]

selectbks.starttimeasstart,facs.nameasnamefromcd.facilities facsinnerjoincd.bookings bksonfacs.facid=bks.facidwherefacs.namein('Tennis Court 2'
http://www.jsqmd.com/news/861033/

相关文章:

  • 2026 网络安全渗透测试行业报告|机遇与前景
  • 新乡施工选仿石漆:在平顶山施工选仿石漆选谁、在开封施工选仿石漆选谁、在新乡施工选仿石漆选谁、在洛阳施工选仿石漆选谁选择指南 - 优质品牌商家
  • 2026年温州整体装修品牌实力对比:5家头部企业服务深度评测与选企建议 - 优家闲谈
  • 2026台州黄金专业回收TOP5评测:台州专业名表回收、台州台州奢侈品回收、台州名表回收、台州奢侈品专业回收、台州奢侈品保管选择指南 - 优质品牌商家
  • 2025-2026年马赛克瓷砖品牌推荐:五大口碑评测卫浴防潮耐用特点性价比高 - 品牌推荐
  • 网络协议基础与TCP/IP详解
  • 0 基础跨行斩获月薪 10k 实力远不及破局魄力
  • 2025-2026年北京装修设计公司推荐:五大口碑评测老房翻新避坑指南市场份额 - 品牌推荐
  • 5分钟学会Windows自动化:Pulover‘s Macro Creator终极指南
  • LDDC终极指南:如何快速获取精准的逐字歌词
  • article-extractor项目架构解析:模块化设计与可扩展性指南
  • 2025-2026年国内人力资源外包公司推荐:五大口碑评测企业用工合规价格选择指南 - 品牌推荐
  • 利用Taotoken审计日志功能追踪与分析团队内部的模型使用情况
  • vcs+verdi+vivado联合仿真
  • 股票打分制方法论
  • 2025-2026年上海靠谱搬家公司推荐:五大排行全程托管省心搬家评测性价比高适用场景 - 品牌推荐
  • 如何快速免费下载无水印抖音视频:一站式批量下载解决方案
  • CANN/asc-devkit cyl_bessel_i0f函数
  • PS 图片模糊修复教程:4 种方法,一键变高清
  • 如何用Ryujinx在PC上完美运行Switch游戏:完整新手指南
  • (C语言)指针详解与应用
  • OpenClaw+Hermes +Vibe Coding本地部署|论文自动化|知识工作流
  • 如何永久免费使用IDM:开源激活脚本完整使用指南
  • 2026全国拍卖师配套服务机构排行:北京,江苏,北京,招聘拍卖师、注册营业执照、注册资产评估公司、注册资产评估备案选择指南 - 优质品牌商家
  • 低压配电柜制造:从电能分配到用电安全的完整解析
  • PHP Intelephense项目结构解析:多工作区、虚拟工作区与远程开发
  • CANN/asc-devkit SIMT数学函数文档
  • 在Nodejs后端服务中集成Taotoken聚合大模型API
  • 洛圣都生存指南:YimMenu开源游戏增强工具与安全防护系统深度解析
  • Git 插件在 IDEA 中提交代码时报错 permission denied 怎么处理?