MySQL - условно добавить значения из разных таблиц? - PullRequest
1 голос
/ 17 мая 2011

Допустим, 3 таблицы:

  • Таблица 1 содержит информацию о цене продукта (например, базовая цена)
  • Таблица 2 содержит информацию о дополнительных ценовых факторах продукта (например, налоги, скидки и т. Д.)
  • В Таблице 3 есть флаги, указывающие, следует ли использовать Таблицу 1 или Таблицу 2 или обе таблицы при расчете общей цены продукта

Возможно ли в MySQL вычислить сумму в этой ситуации? Если так, то некоторые рекомендации по запросу будут оценены.

Ответы [ 2 ]

0 голосов
/ 17 мая 2011
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
0 голосов
/ 17 мая 2011

Вы можете использовать MySQL CASE или IF для вашей цели, например что-то вроде этого:

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>

Если бы у меня было определение таблицы, я мог бы опубликовать более конкретный пример. Но, может быть, если вы посмотрите документацию CASE и IF, вы можете найти собственное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...