मैं काफी बड़ा SQL कर रहा हूं इसलिए मैं क्षमा चाहता हूं कि मेरी टेबल का एक बड़ा उदाहरण प्रदान न करें।MySQL IF में GROUP_CONCAT
SELECT
customer_id,
agreement_id,
if('network' IN (GROUP_CONCAT(DISTINCT services.service_code
SEPARATOR ',') ),
'Yes','No') as networkservice
FROM customers
INNER JOIN agreement USING(customer_id)
INNER JOIN services USING(agreement_id)
GROUP BY customer_id
एक ग्राहक के पास एक समझौता हो सकता है और एक समझौते में बहुत सारी सेवाएं हो सकती हैं। मैं यह पता लगाने की कोशिश कर रहा हूं कि 'नेटवर्क' उस समझौते में से एक है।
चूंकि GROUP_CONCAT एक अल्पविराम से अलग सूची लौटाता है, यह मेरे मामले के लिए बिल्कुल सही लगता है। लेकिन मैं इसे काम करने के लिए नहीं मिल सकता और मैं विचारों से बाहर चला रहा हूँ।
केवल एक ही सेवा नहीं है और कहा कि सेवा 'नेटवर्क' यह हाँ देता है, लेकिन अगर वहाँ एक से अधिक यह सं
अगर मैं का उपयोग करें (INT) service_id बजाय इसे, कोई फर्क नहीं पड़ता जब तक INT रिटर्न है मैं सूची में सबसे पहले खोज रहा हूँ। लेकिन केवल INT के लिए thats, अगर 'नेटवर्क' सूची में पहले है यह सं रिटर्न
मैं कोशिश की है:
if('network' IN (CAST(GROUP_CONCAT(DISTINCT services.service_code
SEPARATOR ' ') AS CHAR) ),
'Yes','No')
और
if('network' IN (concat('\'',
GROUP_CONCAT(DISTINCT services.service_code
SEPARATOR '\', \''),
'\'')), 'Yes','No')
मैं और अधिक उदाहरण प्रदान कर सकते हैं अगर मेरी व्याख्या ध्वनि उलझन में है।
धन्यवाद।
धन्यवाद, एसयूएम का उपयोग करने के बारे में कभी सोचा नहीं। मैंने इसे 'आईएफ (sum (if.s service_cervice_code =' network ', 1, 0))> 0,' हां ',' नहीं) नेटवर्क सेवा के रूप में इस्तेमाल किया और यह बहुत अच्छा काम करता है। – Cleric