Подзапросов гораздо больше, чем нужно.
Кроме того, если столбец 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
.