MySQL:如何根据其他表中的信息从多个表中提取信息?

标签 mysql join

好的,我有 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/

相关文章:

mysql - 如何通过shell脚本验证test.sql文件中的所有查询是否都成功执行?

mysql - 在 WHERE 中加入 MAX

mysql - 将 MySQL key 对转换为串联列表

mysql - 通过两个表之间的连接从一张表中选择总体成绩

mysql - 'Project3.x' 中的 EF OData MySql 未知列 'where clause'

php - 在 PHP 中从 MySQL 获取 Radius

php - 重定向查询不起作用

c# - 图像数据类型错误 (System.InvalidCastException)

mysql - 将事件表与 MYSQL 中的源表连接

不调用 Thread.join() 时的 C++ 多线程异常