Запрос T-SQL, который отображает только те строки, в которых значение в одном столбце соответствует значению в другом столбце другой строки - PullRequest
0 голосов
/ 09 мая 2018

исчерпав свои ограниченные знания о tsql, я надеюсь, что кто-то сможет помочь?

У меня есть таблица, в которой хранятся данные отношений, такие как идентификатор, имя, отношение и тип обратной связи, дата начала и окончания и т. Д.

Каждая строка содержит Взаимный идентификатор для другой стороны отношения. Смотри ниже.

Из этого я хотел бы представить строки, где ID равен 1234 и 1236.

Заранее спасибо за помощь в этом.

Пол

+------+-------+------------+------------+----------+------------+---------+
| ID   | Name  | Start      | Finish     | Type     | Recip Type | RecipID |
+------+-------+------------+------------+----------+------------+---------+
| 1234 | Joe   | 01/05/2018 |            | Father   | Daughter   | 1235    |
+------+-------+------------+------------+----------+------------+---------+
| 1235 | Emily | 01/05/2018 |            | Daughter | Father     | 1234    |
+------+-------+------------+------------+----------+------------+---------+
| 1236 | Susan | 01/09/2017 | 01/05/2018 | Visitor  | Patient    | 1237    |
+------+-------+------------+------------+----------+------------+---------+
| 1237 | Harry | 01/09/2017 | 01/05/2018 | Patient  | Visitor    | 1236    |
+------+-------+------------+------------+----------+------------+---------+

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Возможно, это сделает то, что вы намереваетесь:

select t1.* 
from table t1 
where exists (select 1 from table t2 where t1.id = t2.recipid);

Однако, то же самое может быть достигнуто через self join

0 голосов
/ 09 мая 2018

Вы ищете or:

select t.*
from t
where id in (1234, 1236) or recipid in (1234, 1236);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...