[英]Order by one of two aliases (for relationships of the same table)
I have the tables users and projects. 我有表用户和项目。
Projects has: 项目有:
project_manager_id -> references users.id
business_manager_id -> references users.id
I have to order by one of those. 我必须通过其中一个订购。 So, my query is:
所以,我的查询是:
select * from projects...
LEFT JOIN profiles project_managers ON project_managers.id = projects.project_manager_id
LEFT JOIN profiles business_managers ON business_managers.id = projects.project_manager_id
order by project_managers.name
OR 要么
order by business_managers.name
But for both order by, the result is the same. 但对于两个顺序,结果是相同的。 My result is ordered by the first profiles.name JOIN (project_managers.name).
我的结果是由第一个profiles.name JOIN(project_managers.name)排序的。
How can I order it correctly, by project_managers.name or business_manager.name? 如何通过project_managers.name或business_manager.name正确订购?
Is this what you want? 这是你想要的吗?
order by coalesce(project_managers.name, business_manager.name)
You are using left join
, so this assumes that one of the values is NULL
. 您正在使用
left join
,因此这假定其中一个值为NULL
。
Something like this would work 像这样的东西会起作用
select * from (
select projects.id project_id
, project_managers.name project_managers_name
, business_managers.name business_managers_name
, ...
from projects
LEFT JOIN profiles project_managers
ON project_managers.id = projects.project_manager_id
LEFT JOIN profiles business_managers
ON business_managers.id = projects.project_manager_id
) projects
order by project_managers_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.