Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn con tương quan MySQL trong cú pháp JOIN

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 , tpu 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt trong MySQL JOIN so với LEFT JOIN

  2. Cách tốt nhất để kết nối với cơ sở dữ liệu Mysql trong Delphi là gì

  3. Làm thế nào để ĐẶT HÀNG BẰNG trường varchar dưới dạng số?

  4. Doctrine 2 DQL CASE KHI Đếm

  5. Không gian tên System.Data.SqlClient cho MySQL?