Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL / PHP - उपलब्ध समय स्लॉट खोजें

SELECT a.end AS free_after
FROM bookings a
WHERE NOT EXISTS (
  SELECT 1
  FROM bookings b
  WHERE b.start BETWEEN a.end AND a.end + INTERVAL your_duration HOURS
)
AND a.end BETWEEN start_of_search_window AND end_of_search_window;

आपको केवल your_duration . के लिए मूल्यों की आपूर्ति करने की आवश्यकता है (पूर्णांक), start_of_search_window (तारीख समय) और end_of_search_window (तारीख समय)।

और अगर आप घंटियाँ और सीटी बजाना चाहते हैं....

SELECT free_from, free_until
FROM (
  SELECT a.end AS free_from,
  (SELECT MIN(c.start)
   FROM bookings c
   WHERE c.start > a.end) as free_until
  FROM bookings a
  WHERE NOT EXISTS (
    SELECT 1
    FROM bookings b
    WHERE b.start BETWEEN a.end AND a.end + INTERVAL your_duration HOUR
  )
  AND a.end BETWEEN start_of_search_window AND end_of_search_window
)
ORDER BY free_until-free_from
LIMIT 0,3;

आपको विंडो के भीतर तीन सबसे छोटे उपलब्ध स्लॉट (यानी लक्ष्य आकार के निकटतम) देगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मेरी एसक्यूएल में कॉलम के समूह पर पंक्ति संख्या चाहते हैं?

  2. MySQL:SQL क्वेरी में प्रत्येक परिणाम के लिए रिकॉर्ड कैसे सम्मिलित करें?

  3. मैं SQL का उपयोग करके वैकल्पिक जॉइन कैसे कर सकता हूं

  4. क्या मैं एक JDBC तैयार क्वेरी में एक से अधिक कथनों का उपयोग कर सकता हूँ?

  5. दिनों या महीनों के व्यवसाय के आधार पर कमरों की उपलब्धता का प्रबंधन कैसे करें