2012-04-01 16 views
5

मैं अपने परिदृश्य को सरल बनाएगा - मैं इन 2 टेबल है:कैसे वाइल्डकार्ड MySQL में स्तंभों का चयन नाम के लिए?

table_A - id int, id_table_B_one int, id_table_B_two int, name varchar(30) 
table_B - id int, name varchar(30), description varchar(30) 

तब मैं इस प्रश्न हैं:

SELECT 
table_A.id, table_A.name, table_B_one.*, table_B_two.* 
FROM 
table_A 
LEFT JOIN table_B table_B_one ON table_A.id_table_B_one = table_B.id 
LEFT JOIN table_B table_B_two ON table_A.id_table_B_two = table_B.id 

मेरे समस्या यह है कि मैं एक ही नाम के साथ 3 कॉलम मिल जाएगा है (आईडी और नाम)। मुझे पता है कि मैं एक कॉलम के उपनाम निर्दिष्ट करने के लिए 'AS' कीवर्ड का उपयोग कर सकता हूं। हालांकि, मुझे प्रत्येक चयनित कॉलम निर्दिष्ट करने की आवश्यकता होगी, लेकिन मुझे '*' वाइल्डकार्ड का उपयोग करना होगा।

वहाँ किसी भी तरह से कैसे '*' वाइल्डकार्ड के साथ उर्फ ​​स्तंभ नाम सेट कर सकते हैं है? कुछ इस तरह:।

... table_B_one * table_B_one_ के रूप में * ...

+2

क्यों आप वाइल्डकार्ड का उपयोग की आवश्यकता है? क्या आप बस उन सभी कॉलमों का जादू नहीं कर सकते जिन्हें आप देखना चाहते हैं? '*' या 'तालिका। *' के बजाय – SingleNegationElimination

+0

, सबसे अच्छा कॉलम तुम वैसे भी चयन कर रहे हैं के बारे में स्पष्ट किया जाना है। उन सभी को 'SELECT' कथन में सूचीबद्ध करें। –

+0

टोकनमैकगुय: मुझे इसकी आवश्यकता है, क्योंकि SQL क्वेरी वास्तव में गतिशील रूप से जेनरेट की गई है। जैसा कि मैंने अपने प्रश्न में कहा है - यह इस प्रश्न के उद्देश्य के लिए बहुत सरल है लेकिन मेरे मामले में क्वेरी और इसका उपयोग अधिक जटिल है – Frodik

उत्तर

2

नहीं, नहीं एक तरह से सेट एक वाइल्ड कार्ड का उपयोग उपनाम है। आपको स्पष्ट होना चाहिए।

यदि आपका एसक्यूएल गतिशील रूप से जेनरेट किया गया है, तो सभी जरूरी उपनामों के साथ स्पष्ट होने की लागत (आपके लिए) बहुत छोटी है - केवल एसक्यूएल उत्पन्न करने वाले कोड में सही उपनामों की पीढ़ी डालें।

उपनाम के साथ स्पष्ट होने के नाते कोड की पठनीयता में मदद मिलेगी - है जो अन्य नामों के लिए कर रहे हैं। हालांकि, मैं उत्सुक हूँ: तुम क्यों उपनाम चाहते हैं, तो अपने एसक्यूएल गतिशील रूप से उत्पन्न किया जाता है?

संबंधित मुद्दे