我有一个表的数据库Pages和Users,主键PageId和UserId.
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,我尝试过有和没有别名,等等.但我似乎无法让这个工作,所以我必须遗漏一些东西.
您需要在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)