के साथ सबक्वायरी में शामिल हों मैं जॉइन स्टेटमेंट में एक सबक्वायरी के साथ एक काफी सरल क्वेरी डाल रहा हूं। यह केवल तभी काम करता है जब मैं subquery चयन में * शामिल करता हूं। क्यूं कर?MySQL बाईं ओर *
यह काम करता है
$sql = 'SELECT locations.id, title, name, hours.lobby
FROM locations
LEFT JOIN states ON states.id = locations.state_id
LEFT JOIN (SELECT *, type_id IS NOT NULL AS lobby FROM location_hours) AS hours ON locations.id = hours.location_id
GROUP BY locations.id';
यह नहीं
$sql = 'SELECT locations.id, title, name, hours.lobby
FROM locations
LEFT JOIN states ON states.id = locations.state_id
LEFT JOIN (SELECT type_id IS NOT NULL AS lobby FROM location_hours) AS hours ON locations.id = hours.location_id
GROUP BY locations.id';
मैं भी यह इस तरह से कर रही किया जाना चाहिए? मैंने सोचा * अगर आपको सभी क्षेत्रों की आवश्यकता नहीं है तो सबसे अच्छा नहीं था?
आपकी समस्या जब आपने केवल अपने उपखंड से एक फ़ील्ड चुना था, तो यह था कि आप शामिल कथन नहीं कर सके, क्योंकि घंटे। स्थान_आईडी को उपकुंजी द्वारा आपूर्ति नहीं की गई थी अगर आपने केवल टाइप_आईडी चुना है। – Ashalynd
यह समझ में आता है। और मुझे लगता है कि बहुत स्पष्ट है। वैसे भी यह काम करता है। धन्यवाद। – MAZUMA
यह भी जांचें कि आपको वास्तव में उपयोग करने की आवश्यकता है (दूसरे मामले में) जॉइन के बजाय बाएं जॉइन करें। यदि आप नल टाइप_आईड नहीं चाहते हैं तो मुझे लगता है कि आप वास्तव में एक जॉइन (जो आमतौर पर तेज होता है) चलाने के लिए चाहते हैं। – Ashalynd