sql >> データベース >  >> RDS >> Mysql

JOIN構文でのMySQL相関サブクエリ

    あなたの質問に対する答えはノーです。あなたがしているように相関名を参照することはできません。派生テーブルは、外部クエリが結合の評価を開始する前に、内部クエリによって生成されます。したがって、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. 無向グラフのすべての接続されたサブグラフを見つける方法

    2. ソケット自作を介してローカルMySQLサーバーに接続できません

    3. 複数のテーブルを使用したMySQLクエリ

    4. Oracleの隠し機能