Как проверить, существует ли значение в одном из столбцов, а в каком - в MySQL? - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь создать функцию в MySQL для моей таблицы 'дружбы', где у меня есть 4 столбца:

friend_id, status, user1_id и user2_id (последние два также являются внешними ключами, которые указывают на другой table 'users').

Функция должна получать один параметр, который является идентификатором пользователя, и возвращать, сколько друзей у этого пользователя.

Я создал такую ​​функцию:

CREATE FUNCTION num_of_friends(id int) 
RETURNS int(11)
BEGIN

SET @friends_count = (SELECT COUNT(user2_id) FROM friendships WHERE user1_id = id);
RETURN @friends_count;
END

Итак, эта функция возвращает количество друзей для указанного c пользователя, если его идентификатор находится в столбце user1_id.

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

Как я могу проверить, существует ли идентификатор пользователя, который мы передали в качестве параметра, в любом из столбцов, и на основании этого подсчитать количество дружеских отношений?

1 Ответ

1 голос
/ 21 июня 2020

Вы можете сравнить значение идентификатора с обоими столбцами с помощью OR

CREATE FUNCTION num_of_friends(id int) 
RETURNS int(11)
BEGIN

SET @friends_count = (SELECT COUNT(*) from (select * from friendship  where user1_id=id
                      union
                      select user2_id,user1_id from friendship where user2_id=id)data);
RETURN @friends_count;
END

Отметьте это SQL скрипка: http://sqlfiddle.com/#! 9 / c5928ca / 8

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