Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用CASE plus将plus GROUP BY连接到单个MySQL语句中_Php_Mysql_Sql_Join_Case - Fatal编程技术网

Php 如何使用CASE plus将plus GROUP BY连接到单个MySQL语句中

Php 如何使用CASE plus将plus GROUP BY连接到单个MySQL语句中,php,mysql,sql,join,case,Php,Mysql,Sql,Join,Case,使用上面的编码CASE和JOIN,我在理想的结果表THX Gordon Linoff中添加了两个字段cate_name和final_price 现在我想在理想的结果表中计算另外两个名为avg_rate和count_comment的字段,我该怎么做 用户AAA和BBB将评级添加到book 001中,因此book 001的平均评级为4+5/2=4.5=5 用户CCC在书002中添加了评级,因此书002的平均评级为2 用户XXX和YYY向book 001添加了注释,因此book 001的count\u

使用上面的编码CASE和JOIN,我在理想的结果表THX Gordon Linoff中添加了两个字段cate_name和final_price

现在我想在理想的结果表中计算另外两个名为avg_rate和count_comment的字段,我该怎么做

用户AAA和BBB将评级添加到book 001中,因此book 001的平均评级为4+5/2=4.5=5

用户CCC在书002中添加了评级,因此书002的平均评级为2

用户XXX和YYY向book 001添加了注释,因此book 001的count\u注释=2

SELECT B. * , SC.cate_name, (
CASE WHEN special_offer_type =  'Fixed Value'
THEN B.price - special_offer
WHEN special_offer_type =  'Discount %'
THEN B.price * ( 1 - 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
试试这个:

选择B.*,SC.cate_name, 特价时的情况\u type='Fixed Value' 然后B.价格-特价 当特价商品类型为“折扣%”时 然后B.价格*1-特价/100.0 要价 终止 作为最终价格, 如果nullxx.平均速率为'0', 如果nullyy.count_注释,'0' 从B.cate\u id=SC.cate\u id上的book B JOIN setting\u category SC 左连接选择a.isbn、suma.rate/counta.rate作为平均速率 摘自a级图书 按a.isbn分组为b.isbn上的xx=xx.isbn 左连接选择c.isbn,计数*作为书本注释c中的计数注释 按c.isbn分组为b.isbn上的yy=yy.isbn

CMIIW


编辑..

输出结果应输出到表簿中的所有记录。但是,该语句只能在count_comment>0时显示记录。即,结果仅显示记录isbn 001。无法显示isbn 002和isbn 003。请编辑。。很抱歉使用左join:D和ifnull命令。。因此空值变为0。输出基于book表,其他表可以为空。。所以使用左联接表来联接基于book表的表。。如果结果为空,则使用ifnull更改值:D
book
-----------------------------------------------------------                     
isbn   cate_id   price   special_offer   special_offer_type
001    1         125     5               Fixed Value
002    1         90      30              Discount %
003    2         150     50              Fixed Value

setting_category
--------------------                            
cate_id   cate_name
1         Fiction
2         Dictionary

book_rating                             
------------------------------------------
user   dateadd      timeadd    isbn   rate
AAA    2014/03/20   15:00:00   001     4
BBB    2014/03/21   15:00:00   001     5
CCC    2014/03/22   15:00:00   002     2

book_comment
----------------------------------------------
user    dateadd      timeadd    isbn   comment
XXX     2014/03/20   16:00:00   001    good
YYY     2014/03/21   16:00:00   001    great

ideal_result_table
-----------------------------------------------------------------------------------------------------------------
isbn   cate_id   price   special_offer   special_offer_type   cate_name    final_price   avg_rate   count_comment
001    1         125     5               Fixed Value          Fiction      120           5          2
002    1         90      30              Discount %           Fiction      63            2          0
003    2         150     50              Fixed Value          Dictionary   100           0          0