sql >> Database >  >> RDS >> Mysql

MySQL-gecorreleerde subquery in JOIN-syntaxis

Het antwoord op uw vraag is nee, het is niet mogelijk om naar correlatienamen te verwijzen zoals u doet. De afgeleide tabel wordt geproduceerd door uw inner query voordat de outer query begint met het evalueren van joins. Dus de correlatienamen zoals t , tp , en u zijn niet beschikbaar voor de innerlijke zoekopdracht.

Om dit op te lossen, raad ik aan om dezelfde constante integerwaarde in de inner query te gebruiken en vervolgens de afgeleide tabel in de outer query samen te voegen met een echte voorwaarde in plaats van 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. Is het mogelijk om Full Text Search (FTS) te gebruiken met LINQ?

  2. SQL MAAK TABEL voor beginners

  3. Fix:"Onbekende tabel 'locales' in information_schema" in MariaDB

  4. Hoe een transactie opnieuw proberen na een impasse met Doctrine?