Jawaban atas pertanyaan Anda adalah tidak, tidak mungkin merujuk nama korelasi seperti yang Anda lakukan. Tabel turunan dihasilkan oleh kueri dalam Anda sebelum kueri luar mulai mengevaluasi gabungan. Jadi nama korelasinya seperti t
, tp
, dan u
tidak tersedia untuk kueri dalam.
Untuk mengatasi ini, saya akan merekomendasikan menggunakan nilai integer konstan yang sama di kueri dalam, dan kemudian bergabung dengan tabel turunan di kueri luar menggunakan kondisi nyata alih-alih 1=1
.
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 OUTER 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 = 2458
GROUP BY cfv.typeid
) AS a ON (a.typeid = t.ticketid)
WHERE t.ticketid = 2458;