'on子句'中的未知列(LEFT JOIN)

Kir*_*ice 1 mysql sql

我有一个表的数据库PagesUsers,主键PageIdUserId.

Pages有外国关键字段UserId_ModifiedBy,UserId_CreatedBy并参考Users.

我正在尝试创建一个将返回页面中的字段的查询,以及来自和Users引用的用户的字段.UserId_ModififedByUserId_CreatedBy

这就是我一直努力做的事情:

        $query =   "SELECT 
                        Pages.PageId, 
                        Pages.PageUniqueId,
                        Pages.Slug, 
                        Pages.Name,
                        Pages.Description, 
                        Pages.Keywords,
                        Pages.Layout, 
                        Pages.CustomStylesheet,
                        Pages.PageTypeId, 
                        Pages.CreatedDate,
                        Pages.ModifiedDate,

                        Users_Modified.UserUniqueId AS Modified_User_UserUniqueId,
                        Users_Modified.FName AS Modified_User_FName,
                        Users_Modified.LName AS Modified_User_LName,

                        Users_Created.UserUniqueId AS Created_User_UserUniqueId,
                        Users_Created.FName AS Created_User_FName,
                        Users_Created.LName AS Created_User_LName

                    FROM Pages
                        LEFT JOIN Users AS Users_Modified ON (Users.UserId = Pages.UserId_ModifiedBy)
                        LEFT JOIN Users AS Users_Created ON (Users.UserId = Pages.UserId_CreatedBy)";
Run Code Online (Sandbox Code Playgroud)

行预计将返回为:

[
  PageID: ...,
  PageUniqueId: ...,
  Slug: ...,
  Name: ...,
  ..
  ..
  Modified_User_UserUniqueId: ...,
  Modified_User_FName: ...,
  Modified_User_LName: ...,
  Created_User_UserUniqueId: ...,
  Created_User_FName: ...,
  Created_User_LName: ...
]
Run Code Online (Sandbox Code Playgroud)

唉,我到了SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Users.UserId' in 'on clause'.UserId是一个有效的专栏Users,我尝试过有和没有别名,等等.但我似乎无法让这个工作,所以我必须遗漏一些东西.

Gor*_*off 5

您需要在on子句中使用别名:

    FROM Pages LEFT JOIN 
         Users AS Users_Modified
         ON Users_Modified.UserId = Pages.UserId_ModifiedBy LEFT JOIN
         Users AS Users_Created
         ON Users_Created.UserId = Pages.UserId_CreatedBy
Run Code Online (Sandbox Code Playgroud)