我目前有3张桌子,我正在用这些桌子来预定某些设备.

这是我的桌子:

tblEquipment:

id name description

1 Camera Takes pictures

2 Projector Projects pictures

3 Laptop Portable Computer

tblEvents:

id start end first_name last_name email

1 2009-08-10 2009-08-11 John Doe jd@email.com

2 2009-08-15 2009-08-16 Jane Doe jd@email.com

tblEventData:

id eventID equipmentID

1 1 1

2 1 2

现在,用户将使用请求的时间提交查询,然后他们将看到所有可用的设备.

因此,使用上述示例,如果用户正在寻找8 / 10-8 / 11之间的设备,则他将看到唯一可用的设备是:equipmentID 3(笔记本电脑).

如何创建查询以仅根据请求的时间返回可用设备?

到目前为止,这是我想出的,但是无法使它起作用:

SELECT tblequipment.id as name, tblEvents.start as start, tblEvents.end as end

FROM tblEquipment

INNER JOIN tblEventData on tblEventData.equipmentID = tblEquipment.id

INNER JOIN tblEvents on tbleventdata.eventID = tblEvents.id

WHERE NOT EXISTS(SELECT * FROM tblEvents WHERE $end >= start AND $start <= end)

有任何想法吗?谢谢!

解决方法:

现在,您的查询具有一个NOT EXISTS,它仅查找在给定的开始时间和结束时间之间发生的事件.换句话说,“选择所有设备,只要在此时间范围内没有事件”.那不是你想要的.您需要:“选择所有设备,只要在此时间范围内没有使用该设备的事件.”

相当于:

SELECT tblequipment.id as name

FROM tblEquipment

WHERE NOT EXISTS

(SELECT * FROM tblEvents

INNER JOIN tblEventData ON (tblEvents.id = tblEventData.eventID)

WHERE $end >= start AND $start <= end

AND tblEventData.equipmentID = tblEquipment.id)

编辑:我还从外部查询中删除了JOIN,因为他们坚持只选择在某些时候保留的设备,这与您要回答的问题根本不相关.

您确实想知道保留了哪些设备,但是要在NOT EXISTS查询中,以将其从最终结果中排除.

标签:select,mysql,php

来源: https://codeday.me/bug/20191107/2003108.html

php mysql复杂查询_半复杂的PHP / MySQL Select语句相关推荐

  1. mysql交互式查询_客户机程序5―MYSQL交互式查询程序[图]_MySQL

    6.7 客户机程序5―交互式查询程序 让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序.它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用 ...

  2. mysql union查询_一本彻底搞懂MySQL索引优化EXPLAIN百科全书

    MySQL逻辑架构介绍 日常在CURD的过程中,都避免不了跟数据库打交道,大多数业务都离不开数据库表的设计和SQL的编写,那如何让你编写的SQL语句性能更优呢? 先来整体看下MySQL逻辑架构图: M ...

  3. prometheus监控mysql慢查询_使用Grafana+Prometheus监控mysql服务性能

    prometheus(也叫普罗米修斯)官网: grafana官网: 特征 普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据的 一个 来利用这一维度 不依赖分布式存储; 单个服务器节 ...

  4. mysql连接查询_.net core 里连接mysql查询数据的方法

    1. 创建新项目-ASP.NET Core Web 应用程序 2. 3. 右键项目-管理 NuGet 程序包(N)... 4. 搜索 Pomelo.EntityFrameworkCore.MySql ...

  5. clob和blob是不是可以进行模糊查询_你知道什么是 MySQL 的模糊查询?

    作者 | luanhz 责编 | 郭芮 本文对MySQL中几种常用的模糊搜索方式进行了介绍,包括LIKE通配符.RegExp正则匹配.内置字符串函数以及全文索引,最后给出了性能对比. 引言MySQL根 ...

  6. mysql描述性统计函数_你知道什么是 MySQL 的模糊查询?

    作者 | luanhz 责编 | 郭芮 本文对MySQL中几种常用的模糊搜索方式进行了介绍,包括LIKE通配符.RegExp正则匹配.内置字符串函数以及全文索引,最后给出了性能对比. 引言 MySQL ...

  7. mysql 单表多字段查询_单表多字段MySQL模糊查询的实现

    MySQL模糊查询是我们经常会遇到的,下面就为您介绍MySQL模糊查询的实现方法,希望对您学习MySQL模糊查询方面能够有所帮助. 在最近的一个项目需要实现在单表中对多字段进行多个关键字的MySQL模 ...

  8. 面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql

    1.根据慢日志定位慢查询sql 使用以下命令查看相关系统变量属性: show variables like '%query%'; 主要看这三个属性: long_query_time : 10.0000 ...

  9. mysql 关联查询_响应时间长?MySQL查询优化教程来了!

    - 点击上方"爱数据学习社"关注我们吧! - 为什么查询会慢?--响应时间过长. 如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询, ...

最新文章

  1. ContentProvider是如何实现数据共享的
  2. 多行文本溢出显示省略号(…)
  3. 用VS Code直接浏览GitHub代码 | 12.1K星
  4. 安卓使用 HTTP 协议访问网络
  5. 【数据结构总结】第一章:数据结构基本概念
  6. java8 策略模式_Java 8中的策略模式
  7. java回调函数 final_java中带回调函数的字符串替换,类似js中的replace(rgExp,function)...
  8. python人工智能github的一些跑程序技巧(持续更新~)
  9. Python : async和await、asyncio与aiofiles
  10. RandomForest随机森林模型训练
  11. 大数据SQL如何实现笛卡尔积
  12. 学习spss的心得体会
  13. 《Data Algorithm》读书笔记七 — 购物篮分析
  14. JAVA中的运算规则
  15. 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后打不开屏幕怎么办
  16. R语言sem包实现通径分析
  17. 如何恢复已删除的照片
  18. Mysql 1146错误 出现Table 'mysql.proc' doesn't exist ( 1146 )
  19. 图像处理直方图均衡化
  20. 触宝笔试面试回忆版(不完整)-16暑期实习

热门文章

  1. 一些Web Service的经验
  2. Windows 8实用窍门系列:9.Windows 8中使用FlipView
  3. Oracle Minus关键字 不包含 取差集
  4. python requests库详解_python的requests库详解
  5. oracle不要重复记录,Oracle中去重复记录 不用distinct
  6. SCHAR_MIN常数,C ++中的示例
  7. 退火算法 贪婪算法_算法贪婪策略简介
  8. c构造函数和析构函数_C ++构造函数和析构函数| 查找输出程序| 套装2
  9. linux文本运行层次,Linux基础知识之---文件系统层级结构
  10. 错误:使用printf()打印Hello world时未声明'Hello'/ Text