好的,我有 5 个表,我需要根据一个变量从中提取信息。
gameinfo
id | name | platforminfoid
gamerinfo
id | name | contact | tag
platforminfo
id | name | abbreviation
rosterinfo
id | name | gameinfoid
rosters
id | gamerinfoid | rosterinfoid
1 变量将是 gamerinfo.id,然后它将从 gamerinfo 中提取所有相关数据,从 rosters 中提取所有相关数据,从 rosterinfo 中提取所有相关数据,从 gameinfo 中提取所有相关数据,这然后将从 platforminfo 中提取所有相关数据。
基本上它是这样分解的:
- gamerinfo 包含玩家基本信息 信息。
- rosterinfo 包含有关花名册的基本信息 (即名字和名单上的比赛 旨在)
- 花名册包含从玩家到 不同的花名册(玩家可以在 多个名册)
- gameinfo 包含有关游戏的基本信息(即 名称和平台)
- 平台信息包含关于 游戏的平台不同 玩过(游戏有可能 在多个平台上播放)
我对涉及 JOIN 和 UNION 等的 SQL 查询还很陌生,通常我会把它分解成多个查询,但我认为必须有更好的方法,所以在网上找了一圈之后,我找不到(或者也许我只是不明白我在看什么)我在寻找什么。如果有人能指出正确的方向,我将不胜感激。
最佳答案
按部就类查询需要的数据没有错。如果您在超过 5 个表的 SQL 中使用 JOIN,我们肯定会在所有重要列上创建有用的索引。此外,这可能会产生大量重复数据:
想象一下:您需要来自 gamerinfo 的 1 条记录,可能是 3 条 gameinfo,4 ouf of rosters 以及其余两个表中的 3 条记录。这将为您提供 1*3*4*3*3 = 108 条记录的结果,如下所示:
ID Col2 Col3
1 1 1
1 1 2
1 1 3
1 2 1
... ... ...
您可以看到您将获取 ID 108 次,即使您只需要它一次。因此,我的建议是坚持使用大多数单一、简单的查询来获取您需要的数据。
关于MySQL:如何根据其他表中的信息从多个表中提取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641615/