MySQL子问题嵌套的通行证值



我在mysql上有此查询:

选择ID(((    选择IFNULL(sec_to_time(sum(time_to_sec(time_to_sec(timediff(tfo.a,tfo.da))))),'00:00')as tempo    从 (        选择不同的GG_SETTIMANA,ID_FASCIA        来自Operatori_piano        id_istruttore = o.id    )作为SA    左键加入TAB_FASCE_ORARIE作为tfo on tfo.id = sa.id_fascia)节奏从操作员作为otipo = 2且attivo = 1

mySQL返回此错误:

错误代码:1054。未知列'o.id'in where子句

我尝试了很多组合,但行不通。请您的帮助,非常感谢!

出现的错误是由于您将选择语句嵌套在选项中,在查询中,哪个名称o为别名。别名仅在直接的子查询中可见。

没有 lot 有关您的模式的更多信息,不可能建议正确的,工作解决方案是什么(它可以直接使用我们所知道的您的模式,但在语法上是正确的,但是它可能在功能上不正确)。但是,作为一般的经验法则,请尝试避免相关的子查询(推定的谓词)。除了对维护和性能不利外,MySQL在优化此类疑问方面也很差。

o在子查询内的o别名,但查看您的代码可以避免使用内部join

避免对外部选择的引用
  SELECT id , ( 
      SELECT IFNULL(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(tfo.a,  tfo.da)))),'00:00')  as tempo
      FROM (
          SELECT DISTINCT gg_settimana, id_fascia 
          FROM operatori_piano
          INNER JOIN operatori as o ON  id_istruttore = o.id
          WHERE o.tipo = 2 AND o.attivo = 1
      ) as sa
      LEFT JOIN tab_fasce_orarie as tfo ON tfo.id = sa.id_fascia
  ) as tempo
  FROM operatori 
  WHERE tipo = 2 AND attivo = 1

最新更新