से स्थिति के साथ कम से कम एक पंक्ति के साथ शामिल हो गया है मेरे पास 2 टेबल, रेस्तरां और ऑर्डर हैं, ऑर्डर तालिका में restaurant_id
, status
और date
फ़ील्ड हैं, प्रत्येक दिन आदेश तालिका में एक अलग पंक्ति है।दाएं mysql
मुझे रेस्तरां फ़िल्टर करने और केवल उन रेस्तरां को दिखाने की आवश्यकता है जिनके पास कुछ दिनांक सीमा के लिए कम से कम एक आरक्षण है, लेकिन मुझे इसे कैलेंडर पर दिखाना है, यह जानकारी वाले रेस्तरां की सूची जैसा दिखना चाहिए।
Smth इस
तो की तरह, यह मतलब है कि अगर at least one day with reserved status
शर्त यह है कि समय अवधि के दौरान संतुष्ट है, कि रेस्तरां के लिए उस समय अवधि की सभी आदेशों के साथ ही दिलवाया जाना चाहिए।
मैं एक सामान्य भीतरी में शामिल नहीं कर सकते हैं,
SELECT r.`id`, r.`name`, o.`date`, o.`status`
FROM restaurants r
INNER JOIN orders o ON r.id = o.restaurant_id AND o.date BETWEEN '2013-08-10' AND '2013-08-31'
AND status = 'reserved'
, क्योंकि इस मामले में, उदाहरण के लिए, मैं 31 अगस्त आदेश की जानकारी, restaurant2 के लिए, नहीं होगा पुराना होने के कारण गुस्से में है, हालांकि 10 से 31 तक, लेकिन इसकी स्थिति 'बंद' है। तो, मैं एक छोड़ दिया इस
SELECT r.`id`, r.`name`, o.`date`, o.`status`, o.`id` order_id
FROM restaurants r
LEFT JOIN orders o ON r.id = o.restaurant_id AND
o.date BETWEEN '2013-08-10' AND '2013-08-31'
WHERE o.`id` IS NOT NULL
की तरह शामिल हो बनाने के लिए सोच रहा हूँ लेकिन मैं यह भी सुनिश्चित करने के लिए वहाँ आदेश की स्थिति = 'आरक्षित' के साथ कम से कम एक पंक्ति है कि एक शर्त जोड़ने की जरूरत है, मैं जोड़ने के लिए है, जहां की कोशिश की COUNT(o.status = 1) > 0
जैसे खंड लेकिन यह एक त्रुटि देता है।
धन्यवाद
एक सबक्वेरी का प्रयोग कम से कम एक रिकॉर्ड जहां स्थिति आरक्षित है तो y के साथ restauants पाने के लिए:। एक दूसरे ही रेस्तरां है कि अवधि के भीतर एक आरक्षण है कि तक सीमित करने में शामिल होने के कहां एक आंतरिक शामिल हो सकते हैं। –
@DanBracuk क्या आप इसके बारे में थोड़ा विस्तार कर सकते हैं? धन्यवाद – dav