Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL корелирана подзаявка в синтаксис на JOIN

Отговорът на вашия въпрос е не, не е възможно да се позовават имената на корелация, както правите. Произведената таблица се произвежда от вашата вътрешна заявка, преди външната заявка да започне да оценява присъединяванията. Така имената на корелацията като t , tp и u не са достъпни за вътрешната заявка.

За да разрешите това, бих препоръчал да използвате същата константна целочислена стойност във вътрешната заявка и след това да се присъедините към получената таблица във външната заявка, като използвате реално условие вместо 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. Драйвер за превключване на CodeIgniter от mysql --> mysqli

  2. ASP.NET/Identity Error:Типът обект ApplicationUser не е част от модела за текущия контекст

  3. Вмъкнете В MySQL ОТ друга таблица

  4. MySQL групово MAX() връща неочаквани резултати

  5. mysql_fetch_array пропуска първия ред