gpt4 book ai didi

sql - 多表查询

转载 作者:行者123 更新时间:2023-11-29 04:59:13 25 4
gpt4 key购买 nike

我有四个表:

  • 人物
  • 竞技场团队
  • arena_table_member
  • arena_team_stats。

characters表有guid,name

arena_team 表有 arenateamid、名称、类型

arena_table_member 表有 guid(这和 characters 表一样),arenateamid

arena_team_stats 表有 arenateamid、rating、wins、wins2、played

如何获取角色所在的竞技场团队列表?我试过:

$result=mysql_query("SELECT 
characters.guid
, characters.name
, arena_team.arenateamid
, arena_team.name
, arena_team_stats.rating
, arena_team_stats.wins
, arena_team_stats.wins2
, arena_team_stats.played
, arena_team.type
FROM characters
, arena_team_stats
, arena_team
WHERE characters.name LIKE '%$q%'
AND arena_team.arenateamid = arena_team_stats.arenateamid
ORDER BY arena_team_stats.rating DESC")
or die(mysql_error());

但它会返回 arena_team 表中的所有竞技场球队。

最佳答案

您应该改用联接。当您在 FROM 部分使用逗号分隔表时,您会在结果中获得所有可能的组合。

试试这个查询(使用连接):

SELECT c.guid,c.name,a.arenateamid,a.name,
ts.rating,ts.wins,ts.wins2,
ts.played,a.type
FROM characters c
JOIN arena_table_member ON arena_table_member.guid=character.guid
JOIN arena_team a ON arena_table_member.arenateamid = a.arenateamid
JOIN arena_team_stats ts ON ts.arenateamid = a.arenateamid
WHERE c.name LIKE '%$q%'
AND a.arenateamid = ts.arenateamid
ORDER BY ts.rating DESC

两件事:

  1. 你应该在这里使用别名。 (上面的c,a,ts代替全表名称为别名)

  2. 如果你想精确匹配字符'?',使用c.name = '?'。 c.name like '%?%' 将返回所有带有 ?在他们中。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com