क्या आप यहाँ कर एक JOIN
(हालांकि आप इसे परोक्ष करते हैं, क्योंकि आप एक से अधिक तालिकाओं से चुनें) कहा जाता है। इसका मतलब है, अगर आपने अपने WHERE खंड में कोई शर्त नहीं डाली है, तो आपके पास उन तालिकाओं के सभी संयोजन थे। केवल आपकी हालत के साथ आप उन पंक्तियों में शामिल होने तक सीमित हैं जहां पेय आईडी मेल खाता है।
लेकिन इस पेय के साथ एक्स फोटो हैं, तो प्रत्येक पेय के परिणामस्वरूप एक्स एकाधिक पंक्तियां अभी भी हैं। आपका कथन को प्रतिबंधित नहीं करता है जो तस्वीर जो आप चाहते हैं!
यदि आप केवल एक पंक्ति प्रति पेय चाहते हैं, तो आपको एसक्यूएल को बताना होगा कि यदि आप एक विशेष पेय के साथ कई पंक्तियां हैं तो आप क्या करना चाहते हैं। इसके लिए आपको समूह और aggregate function की आवश्यकता है। आप एसक्यूएल को बताते हैं कि आप कौन सी प्रविष्टियां एक साथ समूह करना चाहते हैं (उदाहरण के लिए सभी बराबर पेय_आईड्स) और चयन में, आपको यह बताना होगा कि प्रत्येक समूहीकृत परिणाम पंक्ति के लिए कौन सी अलग-अलग प्रविष्टियां लेनी चाहिए। संख्याओं के लिए, यह औसत, न्यूनतम, अधिकतम (कुछ नाम देने के लिए) हो सकता है।
आपके मामले में, यदि आप केवल एक पंक्ति चाहते हैं तो मुझे पेय के लिए फ़ोटो पूछने की भावना दिखाई नहीं दे रही है। आपने शायद सोचा था कि प्रत्येक पेय के लिए आपके परिणाम में फोटो की सरणी हो सकती है, लेकिन एसक्यूएल ऐसा नहीं कर सकता है।
SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
name price photo
fanta 5 ./images/fanta-1.jpg
dew 4 ./images/dew-1.jpg
: यदि आप केवल
किसी भी तस्वीर चाहते हैं और आप परवाह नहीं है जो आप drinks_id से मिल जाएगा, बस समूह है (क्रम में पेय प्रति केवल एक पंक्ति पाने के लिए)
MySQL में, हम भी GROUP_CONCAT है, तो आप चाहते हैं, तो फ़ाइल नाम एक ही स्ट्रिंग के लिए श्रेणीबद्ध किया जाना है:
SELECT name, price, GROUP_CONCAT(photo, ',')
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
name price photo
fanta 5 ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg
dew 4 ./images/dew-1.jpg,./images/dew-2.jpg
हालांकि, यदि आपके पास ,
फ़ील्ड मानों के भीतर है तो यह खतरनाक हो सकता है, क्योंकि अधिकतर आप क्लाइंट पक्ष पर इसे फिर से विभाजित करना चाहते हैं। यह एक मानक एसक्यूएल समग्र समारोह भी नहीं है।
ठीक है आपके पास 5 मिलान पंक्तियां हैं, क्योंकि आपके पास एक ही पेय के साथ कई पंक्तियां हैं। आप * क्या होने की उम्मीद करेंगे? आप किस तस्वीर को रखने की उम्मीद करेंगे? –