MySQL - 如何从 10 个表中获取信息

标签 mysql

我有一个包含 10 列的表格。每列都是一些 id。例如: 任务ID 颜色ID 类型ID ....

现在我需要获取所有这些信息并将 ID“翻译”为“真实”内容。 真正的内容在10个不同的表中。表颜色有颜色id和颜色名称,表类型有id和名称等等。

除了 9 个带有内连接的子查询之外,我还能以最好的方式做些什么吗?

我现在的解决方案是:

select P.*, t3.name
FROM 
(select t1.*, t2.name
from t1 left join t2 on t1.id=t2.id) as P left join on P.id3=t3.i3

等等...

最佳答案

使用联接时不需要子查询:

SELECT
  t1.Name AS t1_Name,
  t2.Name AS t2_Name,
  t3.Name AS t3_Name,
  ...
FROM ReferencingTable AS r
INNER JOIN Table1 AS t1 ON r.ID1 = t1.ID
INNER JOIN Table2 AS t2 ON r.ID2 = t2.ID
INNER JOIN Table3 AS t3 ON r.ID3 = t3.ID
...
;

如果某些引用列可能不包含链接,并且您无论如何都需要返回这些行,则应该使用外连接,很可能是左外连接:

...
FROM ReferencingTable AS r
LEFT JOIN Table1 AS t1 ON r.ID1 = t1.ID
LEFT JOIN Table2 AS t2 ON r.ID2 = t2.ID
...

关于MySQL - 如何从 10 个表中获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750841/

相关文章:

mysql - 如何为数据库设置SUPER权限

java - Esper 数据库适配器将数据插入 mysql 数据库?

python - SQL 查询从桥接表返回数据返回错误(可能是由于我的查询语法!)

mysql - 插入逗号分隔的 int 数字时,在 MySQL 数据库中使用什么数据类型?

php - 日期格式 - php

mysql - vb.NET "{0}"连接在 MySQL 命令中不起作用,但 "&"可以

mysql - 在 n :m relationship table 中选择

mysql - SQL 在一个连接中更新多行

php - 按引用代码对图像进行分组

PHP 表单转 MySQL - Array[] 转入 MySQL 问题