在货币前面添加一个美元符号

时间:2018-04-29 01:41:33

标签: sql phpmyadmin

select ( (select price from fruit where name = "apple") * sum( quantity )))
as "value of apples" from inventory
where fruitID = (select fruitID from fruit where name = "apple");

输出给了我苹果的价值,但前面没有$。我知道我需要在某处添加concat函数,但我无法弄清楚它在哪里。

我在哪里添加(concat("$", )

3 个答案:

答案 0 :(得分:1)

有比所需更多的子查询。

此外,如果name中的fruit列不唯一,则查询可能会产生“太多行”错误。

如果name='apple'可以匹配fruit中的多行,我们可能会想要这样的内容:

 SELECT f.fruitid
      , f.name
      , SUM( f.price * i.quantity ) AS `total value`
      , CONCAT('$', SUM( f.price * i.quantity ) ) AS `dollar total value`
   FROM fruit f
   LEFT
   JOIN inventory i
     ON f.fruitid = i.fruitid
  WHERE f.name = 'apple'
  GROUP
     BY f.fruitid 

如果我们想要匹配的所有fruit的组合值,那么像这样:

 SELECT SUM( f.price * i.quantity ) AS `total value`
      , CONCAT('$', SUM( f.price * i.quantity ) ) AS `dollar total value`
   FROM fruit f
   LEFT
   JOIN inventory i
     ON f.fruitid = i.fruitid
  WHERE f.name IN ('apple','pear','pineapple')

这不会将格式化为两位小数。如果我们想要一个格式化的值到两个小数位并包括千位分隔符,我们可以使用MySQL FORMAT函数。

答案 1 :(得分:0)

如果我理解正确,则需要使用JOIN而不是子查询。

你的子查询没有意义。

concat函数可以组合多个字符串。

  

CONCAT(STR1,STR2,...)

我想你可以尝试一下。

select concat('$',f.price * sum(inv.quantity)) as "value of apples" 
from inventory inv
INNER JOIN fruit f on inv.fruitID = f.fruitID
where f.name = "apple";

sqlfiddle:http://sqlfiddle.com/#!9/dde7b/3

Concat Function

答案 2 :(得分:-1)

试试这个

select ( concat('$', (select price from fruit where name = "apple") * sum( quantity ))) as "value of apples" from inventory where fruitID = (select fruitID from fruit where name = "apple");