日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php mysql复杂查询_半复杂的PHP / MySQL Select语句

發布時間:2025/3/11 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php mysql复杂查询_半复杂的PHP / MySQL Select语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我目前有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语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。