我有四张 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/