У меня есть структура базы данных:
таблица пользователей:
- id
- first_name
- last_name
- fire_id (FOREIGN KEY)
таблица соответствий:
id
winner_id (RELATIONSHIP TO "fire_id" IN USERS TABLE) string
loser_id (RELATIONSHIP TO "fire_id" IN USERS TABLE) string
pot_amount int
player1_id (RELATIONSHIP TO "fire_id" IN USERS TABLE) string
player2_id (RELATIONSHIP TO "fire_id" IN USERS TABLE) string
game_id (RELATIONSHIP TO "id" in GAMES TABLE) int
in_progress (BOOLEAN)
таблица игр:
id
name
console
Я пытаюсь построить оператор SQL для PostgreSQL. Вот что я хочу сделать. Создайте запрос, который получает все совпадения, что in_progress имеет значение false. Также присоединится к таблице пользователей и включит player1, и если player2 не равен NULL, в него также войдет player2. Он также будет включать игру в запрос, основанный на "game_id" совпадения.
Если бы кто-нибудь мог помочь мне в создании этого запроса, я был бы очень признателен. Спасибо
На данный момент у меня есть следующий запрос, но он возвращает строку для player1 и другую строку для player2
SELECT *
FROM matches
JOIN users ON matches.player1_id = users.fire_id OR matches.player2_id = users.fire_id
LEFT JOIN games ON matches.game_id = games.id