mysql - Error in SQL logic -
मुझे यह एसक्यूएल क्वेरी मिल गई है:
का चयन करें r.room_id as room_id, room_name , संख्या_रूम, अधिकतम_ लोक, min_rate से कमरे में ऊपरी भाग जोड़ें (SELECT b.room_id, accom_id, COALESCE (संख्या (b. room_id), 0) बुकिंग से बुकिंग के समय में बीआरएआरएआरएआर_आदेश & gt; =: इंड एंड डिप्टी_डेट और एलटी; =: आउटड ग्रुप द्वारा room_id) टी पर (टी.कॉम_आईडी = आर.कॉम_आईडी और आर.रुम_आईड = टी.रुम_आईडी) जहां आर। सीकॉम_आईडी = आईडीआईडी और (टी। बुक्सिंग और एलटी; एनएम_उल्ड्स या टी.बुक्सिंग आईएस नल है) ग्रुप द्वारा रूम_नाम जो निम्न एसक्यूएल तालिका से संबंधित है:
< / P>
परीक्षण संबंधी उद्देश्यों के लिए बुकिंग तालिका में यह जानकारी है:
समस्या है:
जब मैं क्वेरी चलाता हूं: इंडस्ट्रीज़ 2014-07-27 और: आउटड 2014-07-29 मुझे कुछ भी वापस नहीं मिलता है, जो वास्तव में मुझे क्या उम्मीद है! हालांकि, यदि मैं दिनांक 2014-07-28 (: इंडस्ट्रीज़) और 2014-07-29 (: आउटड) के लिए बदलता हूं
दोनों कमरे मुझे लौट आए हैं! जो गलत है Room_id 2 को मेरे पास लौटना चाहिए, क्योंकि पिछला अतिथि 28 वें स्थान पर छोड़ दिया होता है, इसलिए 28-29 नि: शुल्क है, लेकिन room_id 1 को उपलब्ध नहीं होना चाहिए क्योंकि अतिथि अभी भी 29 वें दिन तक रह रहा है।
मैं इस तार्किक त्रुटि को कैसे ठीक कर सकता हूं? मेरा एसक्यूएल गलत कहां है?
संपादित करें: "एसक्यूएल वास्तव में क्या करता है?" इसका मतलब यह है कि जब कमरे में बुकिंग हो रही है, और कमरों में उनके पास कोई दिनांक नहीं है, तो वे बुकिंग करने के लिए स्वतंत्र हैं, इसलिए उन्हें मुफ्त कमरे वापस करनी चाहिए। असल में।
गेरेट कभी भी सही है लेकिन यह भी: आपकी क्वेरी अधिक जरूरी है जितनी ज़रूरी है।
SELECT r.room_id एआर room_id, room_name, num_rooms कमरे आर से WHERE (SELECT Count (*) b से बुकिंग b WHERE b Room_id = r.room_id और b.accom_id = r.accom_id और (arr_date के बीच @ इंड एंड @आउट्ड या डिपाइडेट @ इंड एंड ओउटड के बीच)) & lt; Num_rooms
Comments
Post a Comment