Sports Database - The simplest many-to-many relationship database (ER diagram is below)


First, let's do a complete overview of the database, which is a 3-table join but does NOT show childless parent rows:

select
 games.game_id
,players.player_id
,game_name
,player_name 
from
 games
, players
, gamePlayerRel 
where
 gamePlayerRel.game_id=games.game_id
 and gamePlayerRel.player_id=players.player_id

Database Overview, no childless parent rows shown

Game ID Game Name Player ID Player Name
1Soccer2Dick
3Tennis2Dick
1Soccer3Harry
2Rugby3Harry
3Tennis3Harry

Next, let's join games (parent) to gamePlayerRel (child), showing (if any) games with no players having NULL for player ID:

select
 games.game_id
, game_name
,gamePlayerRel.player_id 
from
 games
 left outer join gamePlayerRel 
on games.game_id = gamePlayerRel.game_id

Players by Game

Game ID Game Name Player ID
1Soccer2
1Soccer3
2Rugby3
3Tennis2
3Tennis3

Next, let's join players (parent) to gamePlayerRel (child), showing (if any) players with no games being played as NULL for Game ID:

select
 players.player_id
, player_name
, gamePlayerRel.game_id 
from
 players
 left outer join gamePlayerRel
 on players.player_id = gamePlayerRel.player_id

Games by Player

Player ID Player Name Game ID
1Tom
2Dick1
2Dick3
3Harry1
3Harry2
3Harry3