子查询在mysql中不起作用

时间:2013-09-19 11:01:22

标签: mysql subquery

这是我的mysql查询

  SELECT tm.MAGAZINE_ID, tm.MAGAZINE_NAME,tm.MAGAZINE_DESCRIPTION,pub.publisher_name,
                tmi.COVER_PAGE_THUMB AS COVER_PAGE_VERTICAL,tmi.FROM_DATE AS ISSUE_DATE,
                tm.html_flag AS HTML_EXIST,tm.CATEGORY_ID,tm.language_id,tm.is_free,tma.AppUrl,
                (SELECT issue_id from tbl_magazine_issue WHERE magazine_id = 141
                ORDER BY FROM_DATE DESC LIMIT 1) as temp_issue_id
            FROM tbl_magazine_apps as tma
                LEFT OUTER JOIN tbl_magazine_code as tmc ON tmc.Code = tma.AppsCode
                LEFT OUTER JOIN `tbl_magazine` AS tm ON tmc.magazine_Id = tm.MAGAZINE_ID 
                JOIN `tbl_magazine_issue` AS tmi ON temp_issue_id = tmi.issue_id
                LEFT OUTER JOIN mst_publisher AS pub ON tm.publisher_id=pub.publisher_id 
            WHERE
                tmi.PUBLISH_STATUS IN(1,3) 
                AND tmi.`OS_SELECT` = '".$osType."' 
                AND tma.id IN (".$appIds.")
                GROUP BY tm.MAGAZINE_ID
                ORDER BY tmi.ISSUE_DATE DESC

但我收到了错误

  #1054 - Unknown column 'temp_issue_id' in 'on clause'

如果有人知道这个,请帮助我。我是这个新手

4 个答案:

答案 0 :(得分:0)

正如消息所示,temp_issue_id列不在以下任何一个表格中:tbl_magazine_appstbl_magazinetbl_magazine_issue。它也不是环境中的变量。

除此之外,任何人都不可能在不了解数据结构的情况下弄清楚如何解决问题。

如果我冒险猜测,根据表名称,该特定连接将是:

            JOIN `tbl_magazine_issue` AS tmi ON tm.magazine_id = tmi.magazine_id

因为杂志问题与杂志相关联对我来说是有意义的。我不知道temp_issue_id是什么。

答案 1 :(得分:0)

AFAIK子查询属于from部分: http://dev.mysql.com/doc/refman/5.7/en/from-clause-subqueries.html 所以我会加入子查询。

像:

SELECT a.a, b.b
FROM table1 as a
JOIN (SELECT b from table2) as b ON a.key = b.key;

答案 2 :(得分:0)

temp_issue_id为指定此列提供别名,我认为它应该是tm.issue_id

答案 3 :(得分:0)

temp_issue_id是根据查询的列名。您需要它转换为表并在SELECT子句中使用后续列​​。