我有2条select语句。一个返回2行,另一个必须返回更多行。我想在一个查询中选择所有行,而不要使用UNION,因为我将无法在UNION中使用相同的列ID。
我的查询是这个
SELECT SUB.name FROM (SELECT U1.id ,U1.name, UOM.organization_id AS ORGID FROM #_users AS U1
JOIN #_user_organization_map AS UOM ON U1.id = UOM.user_id
JOIN #_rsdirectory_entries AS RSE ON UOM.organization_id = RSE.id
JOIN #_rsmembership_membership_subscribers AS RMS ON U1.id = RMS.user_id
WHERE RMS.membership_id = 66 AND UOM.organization_id = 301) AS SUB
JOIN #_users AS U ON SUB.id = U.id
JOIN #_user_organization_map AS UOM1 ON SUB.id = UOM1.user_id
JOIN #_rsdirectory_entries AS RSE1 ON UOM1.organization_id = RSE1.id
JOIN #_rsmembership_membership_subscribers AS RMS1 ON SUB.id = RMS1.user_id
WHERE UOM1.organization_id = SUB.ORGID;
我要做的是让属于特定成员资格的所有用户,但不是所有用户都在数据库中的详细信息中携带member_id值,只有组织的首席执行官。
因此,嵌套的SELECT应该获得订阅所属的CEO的名称(因此,membership_id),然后在外部的SELECT中,我想通过组织ID获取同一组织下的所有雇员。
我得到的结果是首席执行官的名字两次,但是我应该先得到CEO的名字,然后再得到所有雇员的名字。
答案 0 :(得分:0)
子查询仅返回CEO的信息。有关员工的信息位于与之连接的U
表中。
但是您不能加入U.id = SUB.id
,因为这仅将U
限制在CEO的行内。您想让所有所有与首席执行官在同一组织中的用户。
我认为这可以做到。最后三个加入会获得CEO的组织ID
SELECT U.name
FROM #_users AS U1
JOIN #_user_organization_map AS UOM1 ON1 U.id = UOM1.user_id
JOIN #_user_organization_map AS UOM ON UOM1.id = UOM.id
JOIN #_rsdirectory_entries AS RSE ON UOM.organization_id = RSE.id
JOIN #_rsmembership_membership_subscribers AS RMS ON U1.id = RMS.user_id
WHERE RMS.membership_id = 66 AND UOM.organization_id = 301