Câu trả lời cho câu hỏi của bạn là không, không thể tham chiếu các tên tương quan như bạn đang làm. Bảng dẫn xuất được tạo bởi truy vấn bên trong của bạn trước khi truy vấn bên ngoài bắt đầu đánh giá các phép nối. Vì vậy, các tên tương quan như t
, tp
và u
không có sẵn cho truy vấn bên trong.
Để giải quyết vấn đề này, tôi khuyên bạn nên sử dụng cùng một giá trị số nguyên không đổi trong truy vấn bên trong, sau đó tham gia bảng dẫn xuất trong truy vấn bên ngoài bằng cách sử dụng điều kiện thực thay vì 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;