Я получаю список друзей определенного пользователя, использующего этот запрос.
SELECT users.* from users
inner join friends ON user_id = id OR user_id2 = id
WHERE (user_id = 33 OR user_id2 = 33) AND id != 33
GROUP BY user_id, user_id2, id
Теперь я хочу включить количество друзей каждого пользователя в одном запросе
Как Могу ли я это сделать?
Это похоже на дубликат, но я не мог применить другие ответы к моей проблеме. Помощь высоко ценится.
Это схема базы данных
create table if not exists users (
id serial primary key,
phone_number text,
cin text,
name text,
positive_date timestamp,
address text,
created_at timestamp default now()
);
create table if not exists friends (
user_id integer not null references users,
user_id2 integer not null references users,
created_at timestamp default now(),
distance integer
);
И пара операторов вставки, чтобы попробовать вещи
INSERT INTO users (id, phone_number, cin, name, positive_date, address, created_at) VALUES (20, '0306200503', 'k26jx2dx', 'Mathis Gerard', NULL, '2222 Dubois de Provence Suite 117', '2020-03-30 08:31:42.674733');
INSERT INTO users (id, phone_number, cin, name, positive_date, address, created_at) VALUES (21, '0306200503', 'k26jx2dx', 'Mathis Gerard', NULL, '2222 Dubois de Provence Suite 117', '2020-03-30 08:31:42.674733');
INSERT INTO friends (user_id, user_id2, created_at, distance) VALUES (20, 21, '2020-06-05 17:23:00.635', 2);
И вот изображение, объясняющее вещи более подробно:
В результате запроса Get friends of user 1 and their number of friends
будет возвращено следующее:
- 2: id, name ... + count = 2
- 3: id, name ... + count = 1