SQLite: псевдоним таблицы не найден при попытке создать новую таблицу из объединения двух операторов выбора

Надеюсь, название имеет смысл, я довольно новичок в написании запросов и шаток по условиям и тому подобное.

Мне нужна помощь в понимании того, почему мой псевдоним таблицы не найден в следующем запросе. Когда я запускаю его без предложения ON, он выполняется (в SQLite Manager в Firefox), но с предложением я получаю сообщение об ошибке: "Нет такого столбца 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 ]

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
Другие вопросы по тегам