Добавление знака доллара перед валютой - PullRequest
0 голосов
/ 29 апреля 2018
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 голосов
/ 29 апреля 2018

Попробуйте это

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");
0 голосов
/ 29 апреля 2018

Подзапросов гораздо больше, чем нужно.

Кроме того, если столбец 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.

0 голосов
/ 29 апреля 2018

Если я правильно понимаю, вам нужно использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...