0

タイトルが理にかなっていることを願っています。私はクエリを書くのはかなり初めてで、用語などに不安があります。

次のクエリでテーブル エイリアスが見つからない理由を理解する助けが必要です。ON句なしで実行すると(FirefoxのSQLite Managerで)実行されますが、句を使用すると、「そのような列t2.story_idはありません」というエラーが表示されます

注 - 問題を単純化するために、作成したダミー クエリをいくつか使用しています。私の最終的なクエリはまったく同じ構造になるので、エラーや改善できる点があれば共有してください。なぜ 2 つのステートメントが同じテーブルからプルされているのか疑問に思っている方のために説明すると、同じテーブルからプルする 2 つのステートメントを結合する必要があるが、同時に実行できない非常に具体的なことを行う必要があるためです。少なくとも私はこれがそれを行う方法だと言われました(笑)。

   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 に答える