我正在運行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