В настоящее время я пишу программу на C # и хочу загрузить дружбу из базы данных на основе идентификатора, переданного в качестве параметра функции.
У меня есть 2 таблицы (отображаются только важные столбцы).
Таблица 1: игроки
+----------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+---------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(15) | NO | | NULL | |
+----------------------+---------------------+------+-----+---------+----------------+
Таблица 2: messenger_friends
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| user_one_id | int(11) | NO | PRI | NULL | |
| user_two_id | int(11) | NO | PRI | NULL | |
+-------------+---------+------+-----+---------+-------+
Дело в том, что моя идея заключалась в следующем: в messenger_friends, оставьте одну строку для дружбы. Я знаю, что могу сохранить 2 для одной дружбы, но это означало бы больше памяти, так как 500 дружеских отношений станут 1000 записями. Теперь в моем приложении я должен присоединиться messenger_friends
к players
. Я получил эту функцию:
public async Task<IReadOnlyList<MessengerFriend>> GetFriends(int playerId)
Здесь мне нужно получить все записи из messenger_friends
, где ЛИБО user_one_id
ИЛИ user_two_id
равно playerId
. Затем в том же запросе я хочу присоединить его к игрокам. Я знаю, что могу получить записи следующим образом:
SELECT * FROM messenger_friends WHERE user_one_id = {playerId} OR user_two_id = {playerId}
Но я не уверен, как присоединить его к таблице players
, так как мне нужно присоединиться ЛИБО user_one_id
ИЛИ user_two_id
с players.id