Tôi muốn cung cấp điều kiện WHERE trên truy vấn bên trong bằng cách chỉ định innertable.id = outertable.id. Tuy nhiên, MySQL (5.0.45) báo cáo "cột không xác định 'outertable.id' trong 'where clause'". Đây có phải là loại truy vấn có thể không?Truy vấn con của MySQL có liên quan trong cú pháp JOIN
Truy vấn bên trong đang xoay vòng các hàng thành các cột bằng cách sử dụng GROUP BY. Điều này có thể hoàn toàn được thực hiện trong truy vấn bên ngoài, nhưng có thể sẽ phải trả thêm phí do các kết nối thêm. Ngoài ra, tôi có thể bỏ điều kiện WHERE trong truy vấn bên trong và thay vào đó chỉ định ON bên ngoài.id = innerquery.id, nhưng sau đó nó sẽ tìm nạp toàn bộ các hàng truy vấn bên trong để nối lại bên ngoài, đó là không hiệu quả.
SQL thực tế xuất hiện bên dưới:
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;
Câu hỏi ban đầu của tôi là "Loại truy vấn này có thể không?" (liên quan đến MySQL 5.0). Thay đổi giản đồ hoặc sơ đồ trên mã ứng dụng nằm ngoài chủ đề câu hỏi. –