SQL запрос, чтобы получить уникальные строки идентификаторов, которые зависят от другого столбца той же таблицы - PullRequest
0 голосов
/ 04 марта 2020

У меня даже возникают проблемы с изложением слов. У меня есть таблица с полями userID, fName, lName, reportsTo, officeID и еще одна с officeID.

Мне нужно join эти две таблицы и затем получить значения distinct userIDs, где другие пользователи reportsTo = userID.

У меня действительно нет проблем с присоединением к таблицам, поэтому для простоты я проиллюстрирую, что мне нужно:

userID fName lName reportsTo
1      anna  foo   null
2      john  bar   1
3      mary  quux  2
4      paul  faa   2
5      dan   ber   4

Мне нужен запрос, который даст мне:

1 anna foo null
2 john bar 1
4 paul faa 2

, так как это те участники, которые имеют по крайней мере 1 человека под ними. Большое спасибо

Ответы [ 4 ]

0 голосов
/ 04 марта 2020

Мне не совсем ясно, какую роль здесь играет officeid, но следующий запрос должен возвращать только пользователей, о которых им сообщает хотя бы один пользователь;

SELECT DISTINCT t.*
FROM my_table t
   JOIN my_table t1 ON t1.reportsto = t.userid
0 голосов
/ 04 марта 2020

Один из вариантов - использовать подзапрос:

select * 
from test
where userID in (select reportsTo from test);

Вот демоверсия

РЕЗУЛЬТАТ:

enter image description here

0 голосов
/ 04 марта 2020

Вы также можете попробовать это с subquery

SELECT * from yourtable 
WHERE userID IN (SELECT DISTINCT reportsTo FROM yourtable)
0 голосов
/ 04 марта 2020

Вы можете создавать таблицы псевдонимов и обрабатывать одну таблицу как 2:

select T1.* from mytable T1 INNER JOIN mytable T2 ON T1.userID = T2.reportsTo

Вы можете предоставить фактическую скрипку и получить рабочий ответ, но если вы используете псевдоним для своих таблиц они похожи на «копии» и могут использоваться независимо друг от друга.

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