0

我希望标题有意义,我对编写查询还很陌生,并且对术语等感到不安。

我需要一些帮助来理解为什么在以下查询中找不到我的表别名。当我在没有 ON 子句的情况下运行它时(在 Firefox 上的 SQLite Manager 上)但使用该子句时,我收到错误“没有这样的列 t2.story_id”

注意 - 我正在使用我创建的一些虚拟查询来简化问题。我的最终查询的结构将完全相同,因此,如果您发现任何错误或我可以改进的地方,请分享。如果有人想知道为什么这两个语句是从同一个表中提取的,那是因为我需要加入两个从同一个表中提取的语句,但会执行无法同时完成的非常具体的事情。至少有人告诉我这是这样做的方法哈哈。

   SELECT * FROM
    (
           SELECT * FROM
             (
                 SELECT story_id, role_type, user_id 
                 FROM cur_cycle_role_activity
             ) t1 /* end of the first inner select statement t1 */

                LEFT JOIN /* Begin Join Statement */
                (
                  SELECT * FROM
                  (
                       SELECT story_id, workstream_num FROM cur_cycle_role_activity
                  ) t2 /* end of the second inner select statement t2 */
                ) /* End Join */

                ON t1.story_id = t2.story_id /* On clause for Join above */

    ) /* This is the end of the topmost select statement */

错误信息:

    [ no such column: t2.story_id ]
4

1 回答 1

1

包装查询SELECT * FROM (...)会导致问题,因为您不能在子查询中引用别名。

SELECT t1.story_id, t1.role_type, t1.user_id, t2.workstream_num
FROM (
    SELECT story_id, role_type, user_id 
    FROM cur_cycle_role_activity) AS t1
LEFT JOIN (
    SELECT story_id, workstream_num
    FROM cur_cycle_role_activity) AS t2
ON t1.story_id = t2.story_id
于 2017-11-03T21:03:59.810 回答