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

MySQL में दिनांक सीमा विरोधों की जाँच हो रही है

आपकी समस्या यह है कि आपकी क्वेरी पर्याप्त रूप से मजबूत नहीं है। जब आप समस्या को तोड़ते हैं, तो आपके पास यह होता है:

अगर $check_in . द्वारा परिभाषित रेंज और $check_out checkin . द्वारा परिभाषित सीमा को ओवरलैप करता है और checkout किसी . में रास्ता, फिर कमरा बुक हो जाता है। अन्यथा, यह मुफ़्त है।

इसका मतलब है कि:

  • यदि $check_in>=checkin और $check_in <=checkout , कमरा बुक किया गया . है
  • या अगर $check_out>=checkin और $check_out <=checkout , कमरा बुक किया गया . है
  • या अगर $check_in <=checkin और $check_out>=checkout , कमरा बुक किया गया . है

इसलिए, आप जिस जानकारी की तलाश कर रहे हैं उसे प्राप्त करने के लिए आपको अपनी सबक्वायरी में इन दोनों परिदृश्यों का प्रतिनिधित्व करने की आवश्यकता है।

साथ ही, उम्मीद है कि आप datetime . का उपयोग कर रहे होंगे आपकी तुलना के लिए और न केवल time . के लिए , अन्यथा आपको दुष्प्रभाव होंगे।

संपादित करें:SQL क्वेरी

(ध्यान रखें कि बिल्ली की खाल निकालने के एक से अधिक तरीके हैं, इसलिए बोलने के लिए। मैं केवल एक उदाहरण प्रदान कर रहा हूं जो आपके पास पहले से जितना संभव हो सके रखता है। एक बार फिर, मैं यह भी मान रहा हूं कि checkin , checkout , $check_in , और $check_out सभी datetime . का समाधान करेंगे प्रकार)

SELECT *
FROM room
WHERE room_id NOT IN
(SELECT room_id 
 FROM bookings
 WHERE
   (checkin <= '$check_in' AND checkout >= '$check_in') OR
   (checkin <= '$check_out' AND checkout >= '$check_out') OR
   (checkin >= '$check_in' AND checkout <= '$check_out'))


  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. पीडीओ इन () ऐरे स्टेटमेंट और एक प्लेसहोल्डर

  3. UTF8 के साथ mysqldump कैसे लें?

  4. सी # का उपयोग कर MySQL के लिए डेटटाइम कनवर्ट करें

  5. MySQL:एक इन-लाइन सबक्वेरी से कई कॉलम लौटाना