简体   繁体   English

按两个别名之一排序(对于同一个表的关系)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM