Php 一个MySQL语句来连接表并进行一些计算
我有两张桌子,分别叫做“书”和“设置类别”。我想将它们结合在一起,并通过示例计算结果创建一个新的现场调用“final_price”Php 一个MySQL语句来连接表并进行一些计算,php,mysql,sql,join,Php,Mysql,Sql,Join,我有两张桌子,分别叫做“书”和“设置类别”。我想将它们结合在一起,并通过示例计算结果创建一个新的现场调用“final_price” cate_id cate_name 1 Fiction 2 Dictionary book_id cate_id book_name price special_offer special_offer_type cate_name
cate_id cate_name
1 Fiction
2 Dictionary
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
如何使用一个MySQL语句来实现这一点
cate_id cate_name
1 Fiction
2 Dictionary
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
我试过了,但没有一句话:
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
cate_id cate_name
1 Fiction
2 Dictionary
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
书
cate_id cate_name
1 Fiction
2 Dictionary
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
设置类别
cate_id cate_name
1 Fiction
2 Dictionary
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
结果表
cate_id cate_name
1 Fiction
2 Dictionary
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
您可以使用
case
语句进行计算:
cate_id cate_name
1 Fiction
2 Dictionary
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
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;
组合它们的最简单方法是从两个表(t1.fieldA、t1.fieldB、t2.fieldC等)中取出所有需要的字段,然后像您刚才在case语句中那样创建一个字段。所以它看起来像这样:
cate_id cate_name
1 Fiction
2 Dictionary
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
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';
请提供一些更具教育意义的解释。@LaszloPapp是的,我在发布后考虑过这一点。。谢谢你让我保持诚实:PTHX Gordon我在“字段列表”中得到了一个错误
#1054-未知列“sc.special\u offer”
@user3453786。这是因为特价
出现在图书
表中。