मैं innertable.id = outertable.id निर्दिष्ट करके आंतरिक क्वेरी पर WHERE स्थिति प्रदान करना चाहता हूं। हालांकि, MySQL (5.0.45) रिपोर्ट करता है "अज्ञात कॉलम 'outertable.id' 'जहां खंड' 'में। क्या इस प्रकार की क्वेरी संभव है?जॉइन सिंटैक्स में MySQL सहसंबंधित सबक्वायरी
आंतरिक क्वेरी ग्रुप BY का उपयोग करके कॉलम पर पंक्तियों को पिवोट कर रही है। यह पूरी तरह से बाहरी क्वेरी में किया जा सकता है, लेकिन अतिरिक्त जुड़ने के कारण संभवतः अतिरिक्त ओवरहेड लगाना होगा।
वैकल्पिक रूप से, मैं आंतरिक क्वेरी में WHERE स्थिति को छोड़ सकता हूं और इसके बजाय एक बाहरी outabletable.id = innerquery.id निर्दिष्ट कर सकता हूं, लेकिन फिर यह पूरे आंतरिक क्वेरी पंक्ति को फिर से बाहरी में शामिल करने के लिए लाएगा, जो अक्षम है।
वास्तविक एसक्यूएल नीचे दिखाई देता है:
select t.ticketid, u.userid, t.fullname, u.loginapi_userid, t.email, tp.subject, tp.contents, a.PhoneNumber, a.Location, a.Extension, a.BusinessUnit, a.Department
from swtickets t
inner join swticketposts tp on t.ticketid = tp.ticketid
inner join swusers u on t.userid = u.userid
left join
(
select
cfv.typeid,
min(case cfv.customfieldid when 1 then cfv.fieldvalue end) as 'PhoneNumber',
min(case cfv.customfieldid when 3 then cfv.fieldvalue end) as 'Location',
min(case cfv.customfieldid when 5 then cfv.fieldvalue end) as 'Extension',
min(case cfv.customfieldid when 8 then cfv.fieldvalue end) as 'BusinessUnit',
min(case cfv.customfieldid when 9 then cfv.fieldvalue end) as 'Department'
from swcustomfieldvalues cfv
where cfv.typeid = t.ticketid
group by cfv.typeid
) as a on 1 = 1
where t.ticketid = 2458;
मेरा मूल प्रश्न है, "क्या इस प्रकार की क्वेरी संभव है?" (MySQL 5.0 के संबंध में)। एप्लिकेशन कोड पर स्कीमा या स्केलपिंग बदलना प्रश्न विषय के बाहर है। –