сумма полей в разных идентификаторах

0
Table frounds:

ID   |  oname                         | fraised
----- ------------ -----------------------------
1    | linkedcare                     | $15,000,000
2    | Shankai Sports International   | $45,000,000
3    | Puma                           | $95,000,000
4    | Nike Women                     | $75,000,000

PHP-код

$result = mysqli_query($con,'SELECT SUM(fraised) AS SUM FROM frounds'); 
$row1 = mysqli_fetch_assoc($result); 
$sum = $row1['SUM'];    
echo $sum;

Вышеуказанный пункт - '0'

Что я хочу результат

сумма поля "fraised" в качестве примера здесь "230 000 000", но я получаю вывод "0",

Где я не прав?

Теги:

4 ответа

0
Лучший ответ

Есть два способа сделать это.

Во-первых: Если вы хотите сохранить формат fraised в своей таблице, используйте код php, чтобы сделать сумму для вас.

$result = mysqli_query($con, 'SELECT fraised FROM frounds');
$sum = 0;
while ($row1 = mysqli_fetch_assoc($result)) {
    $sum += str_replace('$','',$row1['fraised']);
}
echo $sum;

Во-вторых: измените тип данных в таблице на int в этом случае вы не можете хранить данные в формате $15,000,000, но вы можете использовать формат номера php для отображения данных в формате желаний

  • 0
    1-й результат - 0 снова. Работает.
  • 0
    проверьте обновленный ответ.
Показать ещё 2 комментария
0

Потому что вы используете string вместо number должны изменить тип данных или вам нужно удалить $ и , вместо строки. Запрос:

SELECT SUM(cast(REPLACE(substring(fraised,2),',','') as decimal)) AS SUM FROM frounds;

вы можете использовать следующий код:

$result = mysqli_query($con,"SELECT SUM(cast(REPLACE(substring(fraised,2),',','') as decimal)) AS SUM FROM frounds;"); 
$row1 = mysqli_fetch_assoc($result); 
$sum = $row1['SUM'];    
echo $sum;
0

Не лучшая практика, но вы можете раздеться символ валюты и запятые, литое fraised к ряду, а затем сумма:

SELECT
    SUM(CAST(REPLACE(SUBSTRING(fraised, 2), ',', '') AS UNSIGNED)) AS SUM
FROM frounds;

Двигаясь вперед, используйте номер столбца, возможно десятичный, для хранения информации о валюте. Вы должны просмотреть вышеуказанный запрос как временный взлом, пока не сможете исправить дизайн своей таблицы.

демонстрация

  • 0
    Ошибка разбора: синтаксическая ошибка, неожиданная '') AS UNSIGNED)) AS SUM FROM f '(T_CONSTANT_ENCAPSED_STRING), ожидая', 'или') '
  • 0
    @gautambose Отсутствует запятая
0

Попробуйте этот запрос, он будет работать для вас

select SUM(REPLACE(REPLACE(fraised,'$',''), ',' , '')) as sum from frounds

После обновления запроса ваш код будет

$result = mysqli_query($con,'select SUM(REPLACE(REPLACE(fraised,'$',''), ',' , '')) as sum from frounds'); 
$row1 = mysqli_fetch_assoc($result); 
$sum = $row1['sum'];    
echo $sum;

Причина: вы получаете ноль в связи с типом данными вашей колонки fraised, которые имеют значение в следующем формате '$15,000,000'. В моем решении я переместил $ и comms.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню