MySQL - 有条件地添加来自不同表的值?

时间:2011-05-17 07:34:55

标签: mysql sql

假设3个表:

  • 表1包含有关产品价格的信息(例如基本价格)
  • 表2包含有关产品额外价格因素(例如税,折扣等)的信息
  • 表3中有标志,表明在计算产品总价时是否应使用表1或表2或两个表

MySQL可以在这种情况下计算总和吗?如果是这样,我们将非常感谢您对该查询的一些指导。

2 个答案:

答案 0 :(得分:0)

你可以使用MySQL的CASEIF来达到你的目的,例如:

SELECT IF(c.flag = ?, a.price + b.taxes - b.discount, a.price)
FROM <Table 1> AS a
JOIN <Table 2> AS b ON <what ever>
JOIN <Table 3> AS c ON <what ever>

如果我有表定义,我可以发布一个更具体的例子。但是,也许,如果您查看CASEIF的文档,您可以找到自己的解决方案。

答案 1 :(得分:0)

SELECT SUM(CASE (SELECT flag FROM table3) 
           WHEN onlyTable1 THEN t1.col
           WHEN onlyTable2 THEN t2.col
           ELSE t1.col+t2.col END)

FROM table1 AS t1 JOIN table2 AS t2