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

发布于 2024-11-07 20:43:58 字数 200 浏览 0 评论 0原文

假设有 3 个表:

  • 表 1 包含有关产品价格的信息(例如基本价格)
  • 表 2 包含有关产品附加价格因素的信息(例如税费、折扣等)
  • 表 3 包含指示表 1 或表 2 或两者的标志应该使用表来计算产品的总价

在这种情况下,MySQL 是否可以计算总和?如果是这样,我们将不胜感激有关查询的一些指导。

Assume 3 tables:

  • Table 1 has information about a product's price (e.g. the base price)
  • Table 2 has information about a product's additional price factors (e.g. taxes, discounts, etc.)
  • Table 3 has flags indicating if Table 1 or Table 2 or both tables should be used in computing the product's total price

Is it possible in MySQL to compute the sum in this situation? If so, some guidance on the query would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗藏城府 2024-11-14 20:43:58
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
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
贱人配狗天长地久 2024-11-14 20:43:58

您可以使用 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 的文档,也许您可​​以找到自己的解决方案。

You could use MySQL's CASE or IF for your purpose, for example something like this:

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>

If I'd had the table definition, I'd be able to post a more concrete example. But, maybe, if you have a look at the documentation of CASE and IF, you could figure out your own solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文