sql >> Databasteknik >  >> RDS >> Mysql

MySQL-korrelerad underfråga i JOIN-syntax

Svaret på din fråga är nej, det går inte att referera till korrelationsnamn som du gör. Den härledda tabellen produceras av din inre fråga innan den yttre frågan börjar utvärdera joins. Så korrelationsnamnen som t , tp och u är inte tillgängliga för den inre frågan.

För att lösa detta rekommenderar jag att du använder samma konstanta heltalsvärde i den inre frågan och sedan sammanfogar den härledda tabellen i den yttre frågan med ett verkligt villkor istället för 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. Vad är en "flerdelad identifierare" och varför kan den inte bindas?

  2. Det går inte att återställa root-lösenordet med --skip-grant-tables på ubuntu 16

  3. Det gick inte att ladda DLL 'SqlServerSpatial.dll'

  4. Hur man skapar kapslade tabeller med användardefinierad datatyp i Oracle Database