Выбор списка данных, который может содержать значения из 2 столбцов - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть таблица запросов на добавление в друзья, в которой хранятся данные запроса на добавление в друзья между двумя пользователями (получателем и отправителем), а также Friendrequeststatus (ПРИНЯТО, ОТКАЗАНО):

enter image description here

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

Под другом я подразумеваю (где пользователь, например, 1, является отправителем или получателем для другого пользователя, например, 2, а friendrequeststatus имеет значение ACCEPETED). Под друзьями я подразумеваю все столбцы, в которых пользователь, например, 1 как получатель или отправитель, имеет принятый статус друга.

Я пытался `

 select request.*
from friendrequest request
where 1 in (request.recipient, request.sender) 

enter image description here

1 Ответ

0 голосов
/ 19 ноября 2018

Настройка:

CREATE TABLE t (id INTEGER, status TEXT, recipient INTEGER, sender INTEGER);

INSERT INTO t
VALUES
(1, 'ACCEPTED', 2, 1),
(2, 'ACCEPTED', 3, 1),
(3, 'ACCEPTED', 1, 4),
(4, 'REJECTED', 5, 1),
(5, 'REJECTED', 1, 5),
(6, 'ACCEPTED', 6, 7),
(7, 'ACCEPTED', 1, 2);

Запрос:

SELECT DISTINCT CASE sender WHEN 1 THEN recipient ELSE sender END AS friends
FROM t
WHERE 1 IN (recipient, sender)
AND status = 'ACCEPTED'
ORDER BY 1

Результаты:

| friends |
| ------- |
| 2       |
| 3       |
| 4       |

https://www.db -fiddle.com / f / sfbFeXCvWkoSagJEipfxSr/ 0

Итак, сначала я добавил еще несколько данных, чтобы доказать, что используются только правильные данные.Запрос проверяет получателя / отправителя на 1, как вы это делали в своем запросе.Он также проверяет поле состояния на «ПРИНЯТО», а затем создает один столбец, используя значение, которое не является 1 (оператор CASE) для значения друга из правильного столбца.Затем он выполняет DISTINCT, чтобы убедиться, что об одном и том же человеке не сообщается дважды (если он отправитель в одной записи и получатель в другой ... если это вообще возможно).Заказы по этому сгенерированному столбцу.

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