Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL को क्वेरी बनाने में मदद चाहिए:एक ही पंक्ति में कई तालिकाओं में शामिल हों

मुझे लगता है कि आपने इसे कहीं अधिक सरल कर दिया है। आपके द्वारा उद्धृत क्वेरी ठीक वही लौटाएगी जो आप पहले से चाहते हैं। यहां एक उदाहरण है (एकल तालिका से दो बार चयन करने से आपके पास समान स्थिति मिलती है)

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 में कई पंक्तियाँ होंगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट और अपाचे डीबीसीपी का उपयोग करके MySQL के साथ कनेक्शन पूल समस्या

  2. एक चार्ट बनाने के लिए एक MySQL डेटाबेस और दिनांक सीमा के अनुसार समूह को क्वेरी करें

  3. MySQL LIKE क्वेरी में PHP स्ट्रिंग का उपयोग कैसे करें?

  4. दूरस्थ सर्वर पर mysqldump

  5. क्या दो अलग-अलग उपकरणों में एक ही GCM पंजीकरण आईडी हो सकती है?