可以在同一个表上进行多个连接吗?

时间:2015-09-22 07:15:11

标签: mysql left-join

我有一个关于从具有多个连接的表中获取数据的问题。 表1包含信息(名称和数量),表2包含组合。 表2中的一行包含与表1中的ID相对应的ID。

我尝试根据表2中的相应ID来获取表1中的信息。

表1

Id | Name   | Amount
--------------------
 4 | Test 1 |     50
 5 | Test 2 |     60
 6 | Test 3 |     70
 7 | Test 4 |     80

表2

id | PriceId | MaterialId | ServiceId
-------------------------------------
 1 |       4 |          5 |         6
 2 |       4 |          5 |         7

查询

要了解我尝试达到的目标:

SELECT * FROM Table1 a 
LEFT JOIN Table2 b ON a.Id = b.PriceId
LEFT JOIN Table2 c ON a.Id = c.MaterialId
LEFT JOIN Table2 d ON a.Id = d.ServiceId
GROUP BY a.Id

因此,我尝试从表1中获取与表2中的Id相对应的名称和金额,因此:

当我从表2中选择 ID 1 的所有内容时,我会尝试获取以下内容:

Table 2 with ID 1: PriceId = 4, MaterialId = 6, ServiceId = 6
Table 1: Test 1, Test 2, Test 3

因为PriceId 4对应于Test 1,而MaterialID 6对应于Test 2等。

希望上面显而易见。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

看来你正在从错误的方向接近它。你真正想要的是:

SELECT t2.PriceId AS PriceId, 
    t2.ServiceId AS ServiceId, t1p.Name AS PriceName, 
    t1m.Name AS MaterialName, t1s.Name AS ServiceName
FROM Table2 t2
LEFT JOIN Table1 t1p ON t2.PriceId = t1p.Id
LEFT JOIN Table1 t1m ON t2.MaterialId = t1m.Id
LEFT JOIN Table1 t1s ON t2.ServiceId = t1s.Id

答案 1 :(得分:0)

是的,你可以这样使用...... 看我的例子:

{{1}}

这对你有用。我在我的一个项目

中完成了这个