我有三个表:
Items:
Id |Name | Price | Cat_Id
---- |-------|----------------
1 | Item1 | 50.00 | 1
2 | Item2 | 25.20 | 5
Category:
Id |Name |
---- |------|
1 | Cat1 |
2 | Cat2 |
Discount:
Id |Item_Id| Client_Id|Discount
---- |-------|----------------
1 | 1 | 1 | 10
2 | 1 | 2 | 15
3 | 2 | 2 | 6
我正在尝试为所有商品提供适当的折扣,这对每个客户而言都是不同的。在此示例中,我的客户具有Client_Id 1,该客户的Item1 / 10 /有折扣,而他没有Item2的折扣。
结果应如下所示:
Id |Name | Price | Cat | Discount
---- |-------|----------------|----------
1 | Item1 | 50.00 | Cat1| 10
2 | Item2 | 25.20 | Cat5| 0
我的问题是构建查询的方式是什么。我加入了前两个表并需要过滤第三个表,但是我应该使用临时表还是在查询中进行查询?
最佳答案
尝试这种方式:
select di.id,di.Client_Id,it.Name,it.Price,ca.Cat,ifnull(di.Discount,0)
from Discount di
right join Items it on di.Item_id=it.Id
left join Category ca on it.Cat_Id=ca.Id
order by di_Id,di.Client_id,It.Name
您可以从折扣中获取所有行,然后获取所有项目并查找类别。如果一个商品没有折扣(空),您将得到0
关于mysql - 需要从三个表中查询MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49916760/