2017-09-06 6 views
2

後、外部結合に存在していない私は(sequelizeのORMによって生成された)次のSQLクエリに問題がある:列は別名

SELECT 
    "Publication".*, 
    "user"."id" AS "user.id" 
FROM 
    (SELECT "Publication"."club_id" AS "clubId", "Publication"."user_id" AS "userId" FROM "publication" AS "Publication" WHERE ("Publication"."club_id" = '1')) AS "Publication" 
    LEFT OUTER JOIN "user_account" AS "user" ON "Publication"."user_id" = "user"."id"; 

生じる誤差がある:

ERROR: column Publication.user_id does not exist

LINE 6: LEFT OUTER JOIN "user_account" AS "user" ON "Publication"."... ^

の私の勘何が起こっているのは"Publication"."user_id"userIdとエイリアスされているということです。その後、クエリは、"Publication"(以前はテーブルを参照していたラベルを上書き)としてエイリアスされています。左外部結合は、 user_idというプロパティをuser.idと新しくマッチさせようとしますが、現在はuserIdと呼ばれています。

問題を正しく理解していますか?

答えて

3

ERROR: column Publication.user_id does not exist

答えは簡単user_id <>userIdです:

SELECT "Publication".*, 
     "user"."id" AS "user.id" 
FROM 
    (SELECT "Publication"."club_id" AS "clubId" 
      ,"Publication"."user_id" AS "userId" 
     FROM "publication" AS "Publication" 
    WHERE "Publication"."club_id" = '1') AS "Publication" 
LEFT JOIN "user_account" AS "user" 
    ON "Publication"."userId" = "user"."id"; 
        -- here use column's alias 
+1

おかげで、lad2025。私は問題を解決する以上に私の理解を検証することを望んでいた。私もあなたが提案した変更を行いましたが、その理由を確かめたいと思っていました。 –