我有两张名为" book"和" setting_category"。我想和他们一起创建一个新的实地电话" final_price"通过样本计算得出结果。
如何使用单个MySQL语句来执行此操作?
我尝试了但没有一个声明:
SELECT * FROM setting_category JOIN book ON book.cate_id =
setting_category.cate_id WHERE cate_name = 'Fiction'
SELECT * , (CASE WHEN special_offer_type = 'Fixed Value' THEN price -
special_offer WHEN special_offer_type = 'Discount %' THEN price * (1 -
(special_offer /100)) END) AS final_price FROM book
书
book_id cate_id book_name price special_offer special_offer_type
1 1 AAA 125 5 FixedValue
2 1 BBB 90 30 Discount%
3 2 CCC 150 50 FixedValue
setting_category
cate_id cate_name
1 Fiction
2 Dictionary
result_table
book_id cate_id book_name price special_offer special_offer_type cate_name final_price
1 1 AAA 125 5 FixedValue Fiction 120
2 1 BBB 90 30 Discount% Fiction 63
3 2 CCC 150 50 FixedValue Dictionary 100
答案 0 :(得分:0)
您可以使用case
语句进行计算:
select b.*, sc.cate_name,
(case when special_offer_type = 'FixedValue'
then b.price - b.special_offer
when special_offer_type = 'Discount%'
then b.price * (1 - b.special_offer/100.0)
else b.price
end) as final_price
from book b join
setting_category sc
on b.cate_id = sc.cate_id;
答案 1 :(得分:0)
组合它们的最简单方法是从两个表(t1.fieldA,t1.fieldB,t2.fieldC等)中提取所需的所有字段,然后创建一个类似于刚用case语句执行的字段。所以它看起来像这样:
SELECT
(CASE WHEN t1.special_offer_type = 'Fixed Value' THEN t1.price - t1.special_offer WHEN t1.special_offer_type = 'Discount %' THEN t1.price * (1 - (t1.special_offer /100)) END) AS final_price,
t1.book_id,
t1.book_name,
FROM
book t1
JOIN
setting_category t2
ON
t1.cate_id = t2.cate_id
WHERE
t2.WHERE cate_name = 'Fiction';