मुझे लगता है कि आपने इसे कहीं अधिक सरल कर दिया है। आपके द्वारा उद्धृत क्वेरी ठीक वही लौटाएगी जो आप पहले से चाहते हैं। यहां एक उदाहरण है (एकल तालिका से दो बार चयन करने से आपके पास समान स्थिति मिलती है)
mysql> select * from test t1 join test t2 on t1.a = t2.a LIMIT 1,5;
+------+------+------+------+
| a | b | a | b |
+------+------+------+------+
| 1 | 2 | 1 | 1 |
| 1 | 1 | 1 | 2 |
| 1 | 2 | 1 | 2 |
| 2 | 2 | 2 | 2 |
| 2 | 2 | 2 | 2 |
+------+------+------+------+
5 rows in set (0.00 sec)
मैसकल को परिणाम सेट कॉलम को समान लेबल के साथ लेबल करने में कोई समस्या नहीं है। मुझे लगता है कि आपकी मूल क्वेरी ने t1.* का चयन भाग में किया था।
यदि आप अलग-अलग क्षेत्रों का उल्लेख करना चाहते हैं जिनके नाम अस्पष्ट हैं तो आपको मिलेगा
mysql> select a from test t1 join test t2 on t1.a = t2.a LIMIT 1,5;
ERROR 1052 (23000): Column 'a' in field list is ambiguous
और आपको ठीक वही निर्दिष्ट करना होगा जो आप चाहते हैं (स्तंभ उपनाम वैकल्पिक हैं, आप t1 कर सकते हैं।, t2. साथ ही)
mysql> select t1.a first, t2.a second from test t1 join test t2 on t1.a = t2.a LIMIT 1,5;
+-------+--------+
| first | second |
+-------+--------+
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 2 | 2 |
| 2 | 2 |
+-------+--------+
5 rows in set (0.00 sec)
22MAR संपादित करें नमूना डेटा में बदलाव के बाद ऐसा लगता है कि आप एक तालिका से कई पंक्तियों को एक में बदलना चाहते हैं। यहाँ एक विशेष समाधान है (यह मानते हुए कि आपके पास हमेशा कर, कुल और उप-योग पंक्तियाँ होंगी और आप केवल इनमें रुचि रखते हैं पंक्तियाँ)।
SELECT t1.id, t1.name, t2.product_id, t2.price, t3a.number subtotal, t3b.number total, t3c.number tax
FROM `table_one` AS t1
INNER JOIN `table_two` AS t2 ON t1.id = t2.id
INNER JOIN `table_three` AS t3a ON t1.id = t3a.id and t3a.text = "Subtotal"
INNER JOIN `table_three` AS t3b on t3a.id = t3b.id and t3b.text = "Total"
INNER JOIN `table_three` AS t3c on t3b.id = t3c.id and t3c.text = "Tax"
(यदि आप चाहें तो चयनित भाग में स्थिरांक "कर", "कुल" और "उप-योग" भी चुन सकते हैं और उन्हें कुछ स्तंभ नाम दे सकते हैं)
एक बात जो अस्पष्ट बनी हुई है, वह है आईडी की तालिकाओं के बीच संबंध - क्या वे टेबल_ऑन या टेबल_टू की प्राथमिक कुंजी हैं। यह निश्चित रूप से परिणामों को प्रभावित कर सकता है, जब आपके पास table_one और table_two में कई पंक्तियाँ होंगी।