Odpowiedź na twoje pytanie brzmi:nie, nie można odwoływać się do nazw korelacji tak, jak to robisz. Tabela pochodna jest tworzona przez zapytanie wewnętrzne, zanim zapytanie zewnętrzne zacznie oceniać sprzężenia. Więc nazwy korelacji, takie jak t
, tp
i u
nie są dostępne dla wewnętrznego zapytania.
Aby rozwiązać ten problem, zalecam użycie tej samej stałej wartości całkowitej w zapytaniu wewnętrznym, a następnie dołączenie tabeli pochodnej w zapytaniu zewnętrznym przy użyciu rzeczywistego warunku zamiast 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;