Как выбрать больше строк на основе идентификатора столбца первого выбора - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть 2 выбранных заявления.Один возвращает 2 строки, а другой должен возвращать больше строк.Я хочу выбрать все строки в одном запросе и не использовать UNION, потому что я не смогу использовать тот же идентификатор столбца с UNION.

Мой запрос - это

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;

То, что я пытаюсь сделать, - это получить всех пользователей, принадлежащих к определенному членству, но не все пользователи несут значение members_id в своих данных в базе данных, только генеральный директор организации.

Итак, вложенный SELECTя должен получить имя генерального директора, которому принадлежит подписка (отсюда members_id), а затем во внешнем SELECT я хочу получить всех сотрудников в одной организации по идентификатору организации.

В результате я получаюИмя генерального директора дважды, но я должен получить имя генерального директора, а затем имена всех сотрудников.

1 Ответ

0 голосов
/ 02 февраля 2019

Подзапрос только возвращает информацию генерального директора.Информация о сотрудниках находится в таблице U, к которой вы присоединяетесь.

Но вы не можете присоединиться к U.id = SUB.id, потому что это просто ограничивает U строкой генерального директора.Вы хотите получить всех пользователей в той же организации, что и генеральный директор.

Я думаю, что это будет сделано.Последние три соединения получают идентификационный номер организации генерального директора

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
...