За последние 24 часа нас посетили 42313 программистов и 1813 роботов. Сейчас ищут 2069 программистов ...

Дробь в базе данных

Тема в разделе "PHP для новичков", создана пользователем Виктор К., 3 июн 2016.

  1. Виктор К.

    Виктор К. Новичок

    С нами с:
    1 апр 2016
    Сообщения:
    139
    Симпатии:
    6
    Адрес:
    Украина
    Здраствуйте. Возник вопрос: как в таблицу вставить дробовое значение, например: 0.6
    Проблема в том, что значение просто округляется до целых. Как решить эту проблему?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если MySQL, то тип столбца у таблицы задавай как decimal или если работаешь с деньгами то можно money.
     
  3. Виктор К.

    Виктор К. Новичок

    С нами с:
    1 апр 2016
    Сообщения:
    139
    Симпатии:
    6
    Адрес:
    Украина
    Спасибо!
    --- Добавлено ---
    А через какой разделитель писать дробь?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    точку конечно
     
    Виктор К. нравится это.
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Виктор К. посмотри документацию, если в ней не разберёшься, то так и пиши, что конкретно не понятно и тут помогут.
     
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Используй varchar, там всё сохранится, как строка... А на выходе сделаешь число если надо. :D
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @askanim плохой совет, математические операции нельзя будет в SQL использовать
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ну это да) Но я например не люблю в запросах считать, я все расчёты делаю в php, а из запроса вынимаю данные максимально, и стараюсь максимально хранить все данные в бд. Ну мелочь храню в массивах.
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @askanim можно и в PHP считать, но производительность будет выше если хранить дробные цифры как decimal
     
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Не спорю а лучше вообще, всё считать в js и отправлять потом уже числа в базу. Тогда производительность сервера будет ещё выше, тока валидацию настроить чтобы произвольные числа не пролитали... В сервак.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    JS это только для красоты, всегда нужно перепроверять на PHP, а то денег накинут миллион на счёт, а ты только проверишь что это правильное число.
     
  12. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Говорю же, валидацию настроить, чтобы, не проходили произвольные числа.
    --- Добавлено ---
    Нет ну да ты прав, js только для марафета, конечно по производительности, может лучше и считать в базе, но если атм будут большие пересчёты, то сильная нагрузка на базу будет... Просто бд создано то с целью хранения... Да считать можно, но скорее я склоняюсь к тому что, счёт в бд нужен, если надо произвести какие то сортировки, итд.
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    тут всегда нужно упоминать о дублировании этой проверки на стороне сервера.

    Скорость в выборке, сортировке, индексах и размере данных. Для этого делают дробные как decimal. Считать не обязательно.
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    @askanim, простые арифметические операции, такие как MIN, MAX, SUM, AVG и т.п. лучше делать в запросе сразу. И потом, могут быть запросы, где потом этот sum будет участвовать в условии. Что-нибудь типа

    Код (Text):
    1. select id, (select sum(total) from order_item where order_item.order_id=`order`.id) order_total from `order` having order_total > 1000;
    C varchar так не получится