使一列与不同表中另一列的数据相匹配

时间:2021-07-27 12:18:31

标签: sql database postgresql backend

我制作了一个 Godot 游戏并将其放在我的前端,当用户使用该站点时,数据库方面会发生两件事。首先他/她输入一些详细信息,然后他们玩游戏,无论输赢,结果都会发送到后端。 目前我在 Postgres 中有两个表:Player 和 Play_Session; Player 由用户详细信息(例如昵称等)构成,而 Play_Session 由游戏信息构成,例如他们击败它所花费的时间、他们的奖励等。我试图通过 Players ID 和 Play_Sessions 将两者联系起来userId 我已经这样做了,如果两者匹配,一切都会按预期工作,如果不匹配,则它不是有效的提交。我该怎么做呢?我不能使用像连续剧这样简单的东西,就好像两个玩家同时玩一样,事情会分崩离析,一个人可能会得到其他人的数据。这意味着我很可能需要更改我的插入语句。 我的代码如下:

export const createPlayer = async (email: string, nickname: string, address: string, number: bigint): Promise<QueryResult> => {
  return await DbConnectionManager.pool.query(`INSERT INTO ${Table.Player} (${PlayerCols.Email}, ${PlayerCols.Nickname}, ${PlayerCols.Address}, ${PlayerCols.Number}) VALUES ($1,$2, $3, $4)`,
    [email, nickname, address, number]);
}
----------
export const getPlayerData = () => {
  return DbConnectionManager.pool.query(`SELECT ${PlayerCols.Email}, ${PlayerCols.Nickname}, ${PlayerCols.Address}, ${PlayerCols.Number}, ${SessionCols.Date}, ${SessionCols.Reward}, ${SessionCols.Time} FROM ${Table.Player} P JOIN ${Table.Session} ON P.${PlayerCols.Id} = ${SessionCols.UserId}  WHERE ${SessionCols.Score} = 50 AND ${SessionCols.Date} = '2021-07-24'` )
}

0 个答案:

没有答案
相关问题