Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按两个别名之一排序(对于同一表的关系)_Sql_Database_Postgresql - Fatal编程技术网

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

Sql 按两个别名之一排序(对于同一表的关系),sql,database,postgresql,Sql,Database,Postgresql,我有用户和项目的表格 项目包括: project_manager_id -> references users.id business_manager_id -> references users.id 我得点一个。因此,我的问题是: select * from projects... LEFT JOIN profiles project_managers ON project_managers.id = projects.project_manager_id LEFT JOIN

我有用户和项目的表格

项目包括:

project_manager_id -> references users.id
business_manager_id -> references users.id
我得点一个。因此,我的问题是:

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 

但对于order by和order by,结果是相同的。我的结果按第一个profiles.name JOIN(project\u managers.name)排序

我如何才能按项目经理的姓名或业务经理的姓名正确订购?

这是您想要的吗

order by coalesce(project_managers.name, business_manager.name)
您正在使用
left join
,因此这假设其中一个值为
NULL

这是您想要的吗

order by coalesce(project_managers.name, business_manager.name)

您使用的是
left join
,因此这假设其中一个值为
NULL

类似的方法可以工作

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 

像这样的东西会有用的

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 

我从来没有两个人同时下过命令我从来没有两个人同时下过命令你的解决方案清除了我的视线,用别名做了一个投影,它成功了!谢谢你,你的解决方案清除了我的视线,用别名做了一个投影,效果很好!非常感谢。