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("$", )
?
答案 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
答案 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");