我有一个关于从具有多个连接的表中获取数据的问题。 表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等。
希望上面显而易见。任何帮助表示赞赏!
答案 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}}
这对你有用。我在我的一个项目
中完成了这个