sql >> Databáze >  >> RDS >> Mysql

Korelovaný poddotaz MySQL v syntaxi JOIN

Odpověď na vaši otázku je ne, není možné odkazovat na korelační jména, jak to děláte vy. Odvozená tabulka je vytvořena vaším vnitřním dotazem předtím, než vnější dotaz začne vyhodnocovat spojení. Takže korelační názvy jako t , tp a u nejsou dostupné pro vnitřní dotaz.

Chcete-li to vyřešit, doporučoval bych použít stejnou konstantní celočíselnou hodnotu ve vnitřním dotazu a poté připojit odvozenou tabulku ve vnějším dotazu pomocí skutečné podmínky namísto 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. Jak vložit řetězec do jiného řetězce na SQL Server pomocí STUFF()

  2. Připojení k databázi pomocí PHP

  3. Vícenásobné počty s různými podmínkami v jediném dotazu MySQL

  4. Název schématu MySQL s pomlčkou mi neumožňuje provést dotaz z příkazového řádku