我正在运行MySQL 5.1.71。在我的数据库中有三个表格 - 加载,黄铜和制造加载是我的“主”表。我的目标是查询加载并在结果中包含mfg.name。我已经尝试了JOIN
子句和子查询的各种迭代,这些子查询都带有和不带有WHERE
子句。看来这应该是相当微不足道的,所以我不知道我不能达到解决方案。SQL Join和Sub-query
load
-------------------------
| id | desc | brass_id |
-------------------------
| 1 | One | 2 |
| 2 | Two | 1 |
-------------------------
brass
---------------
| id | mfg_id |
---------------
| 1 | 6 |
| 2 | 8 |
---------------
brass_mfg
------------------------
| id | name |
------------------------
| 6 | This Company |
| 8 | That Company |
------------------------
我想要的结果会是...
results
---------------------------
| load | mfg |
---------------------------
| One | That Company |
| Two | This Company |
---------------------------
- 负载ID将永远只有一个黄铜ID
- 黄铜ID永远只有一个MFG ID
ED IT
以前提供的样品数据(上面)已更新。此外,下面是我正在运行的查询和我得到的结果。该公司在每个返回的记录中都是错误的。我在查询和结果中包含了表中的ID。出现的公司名称不是生产制造商表中的ID的名称。
SELECT
load.id AS "load.id",
load.brass_id AS "load.brass_id",
brass.id AS "brass.id",
brass.mfg_id AS "brass.mfg_id",
brass_mfg.id AS "brass_mfg.id",
brass_mfg.name AS "brass_mfg.name"
FROM `load`
LEFT JOIN brass ON load.brass_id = brass.id
LEFT JOIN brass_mfg ON brass.id = brass_mfg.id
-----------------------------------------------------------------------------------------
| load.id | load.brass_id | brass.id | brass.mfg_id | brass_mfg.id | brass_mfg.name |
-----------------------------------------------------------------------------------------
| 1 | 2 | 2 | 6 | 2 | Wrong Company |
| 2 | 1 | 1 | 8 | 1 | Incorrect Company |
-----------------------------------------------------------------------------------------
联接是SQL查询的基本构建块。他们应该是你的第一选择。要优化,请查看索引。 – MatBailie
我真的在这里看不到问题。 – Strawberry
值得一提的是,您所期望的结果看起来像是假定每个'product'都有一个'mfg',但关联表--''''通常用于多对多的关系中......请注意! – Darek