sql - 查询出现问题

标签 sql mysql

我有四张 table :

  • 字符
    • 指南
    • 姓名
    • 性别
    • 类(class)
    • 种族
    • 在线
  • character_arena_stats
    • 指南
    • 个人评级
    • matchmaker_ rating
  • arena_team_member
    • 芳酰胺
    • 参加过_season
    • 玩了_周
    • wons_season
    • wons_week
  • arena_team
    • 芳酰胺
    • captain_guid

我需要获取角色详细信息(种族、类(class)、姓名、性别、在线)和团队信息(个人评级、matchmaker_ rating、played_season、played_week、wons_season、wons_week、captain_guid),但无法正常工作。我的查询是:

$result=mysql_query("SELECT 
            c.guid,
            c.name,
            c.gender,
            c.class,
            c.online,
            c.race,
            atm.guid,
            atm.played_season,
            atm.played_week,
            atm.wons_season,
            atm.wons_week,
            atm.arenateamid,
            cas.personal_rating,
            cas.guid,
            cas.matchmaker_rating,
            at.arenateamid,
            at.captainguid
         FROM
         character_arena_stats cas,
         arena_team_member atm,
         characters c,
         arena_team at
         WHERE c.guid = cas.guid AND atm.arenateamid = ".$entry." AND at.arenateamid = ".$entry."");

它应该只返回 guid 等于 c.guid、cas.guid、atm,guid 的成员以及 atm.arenateamid 等于 at.arenateamid 的成员。安装后,它会返回很多随机成员。

感谢并抱歉我的英语。

最佳答案

由于您没有指定竞技场表中的记录应如何连接到角色表中的记录,因此您将获得交叉连接,该连接将返回角色记录与竞技场记录的所有组合。

当您说“我想要全部获得”时,您的意思到底是什么?找到您的查询的起点。例如:您是否正在寻找按团队组织的所有角色及其详细信息和竞技场统计数据?或者,对于每个角色,他们参加的所有团队?

更清楚地定义需求将有助于我们提出解决方案。 :)

更新:实际上,在更仔细地阅读查询后,我相信我可以推断出您在寻找什么:

SELECT 
            c.guid,
            c.name,
            c.gender,
            c.class,
            c.online,
            c.race,
            atm.guid
            atm.played_season,
            atm.played_week,
            atm.wons_season,
            atm.wons_week,
            atm.arenateamid,
            cas.personal_rating,
            cas.guid,
            cas.matchmaker_rating,
            at.arenateamid,
            at.captainguid
         FROM
         character_arena_stats cas,
         arena_team_member atm,
         characters c,
         arena_team at
         WHERE c.guid = cas.guid 
         and c.guid = atm.guid
         and atm.arenateamid = at.arenateamid
         AND at.arenateamid = ".$entry."

请注意,竞技场团队和角色表现在根据队长的 GUID 连接 - 这将避免交叉连接(“随机行”)问题。此外,竞技场团队成员现已加入竞技场团队,并且仅根据团队表检查过滤器参数。

在不了解更多数据和要求的情况下,不确定这能否准确地为您提供所需的内容 - 我相信它将为您提供每个球队队长的列表、他们的竞技场统计数据以及他们的团队和团队成员的统计数据。希望这会插入您前进。祝你好运!

关于sql - 查询出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3754783/

相关文章:

mysql - 防止删除数据库中的特定行

python - Peewee - 如何执行原始查询并将其映射到字典?

mysql - key 'groser' 的重复条目 'PRIMARY'

mysql - 我可以使用 Electron JS 将我的 Web 应用程序转换为桌面应用程序吗

mysql - WHERE 条件中的 IF 语句

php - 获取日期范围的查询结果

mysql - SQL 选择与或

mysql - 转换 SELECT 结果中的列类型

mysql - 如何获取mysql中同一行的列值和平均值?

mysql - 如何在数据库中随机字母列表的每个字母后添加逗号