【问题标题】:Need to match user ids from two fields to their names in another table需要将两个字段中的用户 ID 与其在另一个表中的名称相匹配
【发布时间】:2012-09-14 16:19:07
【问题描述】:

我正在为我的游戏服务器开发一些东西并制作自定义网站禁令。

我有一个禁止表(禁止时间、原因、禁止玩家、禁止管理员等) 禁止玩家和禁止管理员字段都使用存储在另一个表中的玩家 ID。

我知道如何加入表格,但我不知道如何区分被禁止的玩家和管理员,表格基本上是这样的:

信息表:

some info field| more info | more info| player_id | creator_id

info info      | info info | info info|         1 |          2
info info      | info info | info info|         3 |          2
info info      | info info | info info|         5 |          4

球员表:

id  | name

1   | john
2   | steve
3   | sally
4   | bob
5   | jack

玩家 id 是被封禁的玩家,创建者是管理员,所有名称无论是管理员还是玩家都存储在玩家表中。我想要的是有一个页面显示被禁止的玩家、被禁止的原因、被禁止的管理员和时间

【问题讨论】:

  • 我是否正确理解这些表位于 Postgres 或 MySQL 等 RDBMS 中?

标签: php join matching names


【解决方案1】:

你可以试试:

SELECT
  info1,
  info2,
  p1.name AS player_name,
  p2.name AS admin_name
FROM more_infos mi
JOIN players p1 ON p1.id = mi.player_id
JOIN players p2 ON p2.id = mi.creator_id;

参见Sql Fiddle 演示。

【讨论】:

    【解决方案2】:

    您需要加入玩家表两次 - 一次用于被禁止用户(玩家),一次用于禁止创建者(管理员),如下所示:

    SELECT info.*, player.name, admin.name
    FROM info
    JOIN players player ON player.id = info.player_id
    JOIN players admin ON admin.id = info.creator_id
    

    【讨论】:

    • 谢谢! @blankspac3,如果这对您有帮助,如果您将其标记为答案,我将不胜感激。
    【解决方案3】:
    SELECT j1.name banned_player, j2.name admin
    FROM info_table it
    JOIN players j1 ON j1.id = it.player_id
    JOIN players j2 ON j2.id = it.creator_id
    

    试一试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多