sql - mysql three joins -
मुझे mysql के साथ एक समस्या है
मेरे पास 3 टेबल हैं:
< कोड> जमा + ------------------- + ------------- + ------ + ----- + | फील्ड | प्रकार | नल | कुंजी | + ------------------- + ------------- + ------ + ----- + | आईडी | बिल्टीन्ट (20) | नहीं | पीआरआई | | स्थिति | इंट (2) | नहीं | | | जमा राशि | दिन-समय | नहीं | मुल | | रिवर्स पेमेंट_आईडी | बिल्टीन्ट (20) | हां | संयुक्त राष्ट्र | | Claim_id | इंट (2) | नहीं | संयुक्त राष्ट्र | | भुगतान_आईडी | बिल्टीन्ट (20) | हां | संयुक्त राष्ट्र | + ------------------- + ------------- + ------ + ----- + कोड>
भुगतान
+ -------------------------- + - ------------- + ------ + ----- + | फील्ड | प्रकार | नल | कुंजी | + -------------------------- + --------------- + ------ + ----- + | आईडी | इंट (10) | नहीं | पीआरआई | | भुगतान दिनांक | टाइमस्टैम्प | नहीं | मुल | | पिन | इंट (10) | नहीं | मुल | | बैलेंस बदलें | दशमलव (15, 2) | हां | |
दावा
+ ------------------------ + - ------------ + ------ + ----- + | फील्ड | प्रकार | नल | कुंजी | + ------------------------ + -------------- + ------ + - --- + | आईडी | इंट (11) | नहीं | पीआरआई | | पूर्णनाम | Varchar (100) | नहीं | | | जमाआम | ब्लॉब | नहीं | | | आईपी | Varchar (3 9) | नहीं | | | स्थिति | इंट (2) | नहीं | | + ------------------------ + -------------- + ------ + - --- +
मैं जमा (दावों के साथ) भुगतान या रिवर्स पेमेंट को दो तिथियों के बीच चुनने का प्रयास करता हूं, मैं इस क्वेरी को 3 में शामिल करता हूं:
EXPLEN SELECT this_.id as id60_3_, ..., fcpayment2_.id as id59_0_, ..., reversepay3_.id एएस आईडी 59_1_, ..., cl1_.id के रूप में आईडी 61_2_, ... जमा से यह IN_ER जमा करें भुगतान fcpayment2_ इस पर _ .payment_id = fcpayment2_.id LEFT OUTER JOIN भुगतान रिवर्सपेय 3_ ON this_.reversePayment_id = रिवरपैस 3_.id इनर जॉइन करें CL1_ ON this_.claim_id = cl1_.id WHERE ((fcpayment2_.paymentDate & gt; = '2010-08-04 21:00: 00 'और fcpayment2_.paymentDate & lt; =' 2010-08-05 08:01:00 ') या (रिवर्सपेय 3_.paymentDate & gt; =' 2010-08-04 21:00:00 'और रिवर्सपेय 3_पएमेंटडेट & lt; =' 2010-08-05 08:01:00 ')) ORDER BY__DepositDate DESC
परिणाम है
+ ---- + - ------------ + -------------- + -------- + ------------- -------------------------------------------------- ----- + ---- ------ + --------- + --------------------------------- -------- + -------- + -------------------------------- - + | आईडी | Select_type | टेबल | प्रकार | संभव_कीज | कुंजी | Key_len | रेफरी | पंक्तियाँ | अतिरिक्त | + ---- + ------------- + -------------- + -------- + ------ -------------------------------------------------- ------------ + ---------- + --------- + ---------------- ------------------------- + -------- + --------------- ------------------ + | 1 | सरल | Cl1_ | सभी | प्राथमिक | नल | नल | नल | 426588 | अस्थायी का उपयोग करना; फाइलोर्ट का उपयोग करना | | 1 | सरल | यह_ | Eq_ref | Claim_id, भुगतान_आईडी, एफकेडीबी 5 ए0548511 बी 6 सीडीडी, एफकेडीबी 5 ए054867 बीए 4108 | Claim_id | 4 | Portal.cl1_.id | 1 | | | 1 | सरल | Fcpayment2_ | Eq_ref | प्राथमिक, भुगतान दिनांक, तिथि | प्राथमिक | 4 | Portal.this_.payment_id | 1 | जहां का उपयोग करना | | 1 | सरल | रिवर्सपेय 3_ | Eq_ref | प्राथमिक | प्राथमिक | 4 | Portal.this_.reversePayment_id | 1 | जहां का उपयोग करना | + ---- + ------------- + -------------- + -------- + ------ -------------------------------------------------- ------------ + ---------- + --------- + ---------------- ------------------------- + -------- + --------------- ------------------ +
क्यों परिणाम में पहली तालिका cl1_ है और क्यों mysql कुंजी का उपयोग नहीं करता है?
क्योंकि आपने 'स्पष्टीकरण' शब्द का प्रयोग किया है, और क्योंकि cl1_
वह उपनाम है जिसे आपने दिया था आपकी क्वेरी में तालिका।
मुझे कुंजी के बारे में आपका प्रश्न नहीं समझता।
Comments
Post a Comment