Вытягивание другого ряда, если оно соответствует критериям первого вытянутого ряда - PullRequest
0 голосов
/ 19 июня 2019

Необходимо сравнить некоторые учетные записи, которые есть у некоторых людей, учетную запись администратора и обычную учетную запись. В этих учетных записях администратора указана их обычная учетная запись в качестве менеджера, и все учетные записи администратора начинаются с 1. Как бы я сделал так, чтобы она вытягивала строку менеджера, а также строку с учетной записью администратора?

Я пытался использовать «Где и где существует», и я не могу придумать, как использовать Select, чтобы получить менеджера, немного туннельного видения, я думаю, прямо сейчас.

SELECT *
FROM 
    view
WHERE id like '1%'

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

Так что, если у Боба есть две строки в таблице счетов, одна с именем 1Bob, а другая с именем Bob, а 1Bob перечисляет Боба в качестве менеджера в столбце менеджера 1Bob, результат должен получить 1Bob и Bob

Input
+--------+-------+---------+
| Number |  ID   | Manager |
+--------+-------+---------+
|      1 | 1Bob  | Bob     |
|      2 |  Bob  | Cindy   |
|      3 | Cindy | Derek   |
+--------+-------+---------+

Result

+--------+------+---------+
| Number |  ID  | Manager |
+--------+------+---------+
|      1 | 1Bob |  Bob    |
|      2 |  Bob | Cindy   |
+--------+------+---------+

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Вы можете использовать предложение exists:

select v.*
from view v
where v.id like '1%' or
      exists (select 1 from view v2 where v2.manager = v.id and v2.id like '1%');
1 голос
/ 19 июня 2019

Похоже, ваша архитектура данных нуждается в серьезной помощи.Но, учитывая описание, вы можете объединить это вместе по этим направлениям.

SELECT *
FROM 
    view v
join view v2 on v2.id = substring(v.Manager, 2, len(v.Manager))
WHERE v.id like '1%'

- РЕДАКТИРОВАТЬ - Попытка обновить это с новым пониманием структуры таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...