Ответы пользователя по тегу MySQL
  • Как решить задачу sql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    селект имя, сум(часы) часы
    фром имена и
    лефт джоин тайм т
    он и.ид = т.емплои_ид
    груп бай т.емплои_ид
    ордер бай часы деск лимит 3

    как то так...
    Ответ написан
    9 комментариев
  • Как не танцевать на граблях с бубном делая CRM?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Наиболее затратное по времени выполнения это расчет остатков за весь период на указанную дату в разрезе по номенклатуре.

    1) Это ваше предположение или вы делали замеры производительности запросов и кода?
    2) Если производительность действительно проседает, то каким образом у вас происходит вычисление? SQL с агрегацией и каунтом?
    3) Сколько строк в таблицах выборки?
    4) Что показывает explain?
    5) Индексы?

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

    Некоторую добавочную скорость может дать просто "долгий" кэш на такие запросы, с которым в принципе могут возникнуть те же проблемы - некоторое время данные будут неконсистентны.
    Ответ написан
  • Как лучше хранить дерево в mySQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Самое простое что приходит на ум - хранить парент_айди, рут_айди и левел. Тогда для любого узла можно легко выбрать всех потомков.
    Ответ написан
  • Почему не хочет вытаскивать данные ИЗ бд или не работает переменная?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1)
    WHERE `ID`={$_GET['id']}
    за такое в приличном обществе бьют клавой по кумполу, до полного просветления.
    2) есть важнейшая функция, которую почему то все новички игнорируют - var_dump(); 100% решает проблемы, главное - правильно и часто использовать.
    3) Если есть запрос и возникает проблема с его использованием - выводите запрос (как строку) и запускайте этот запрос "вручную", например через пхпмайадмин.
    4) Вангую что вывод ошибок и варнингов у вас выключен. Смотрите логи или включите вывод ошибок.
    Ответ написан
    1 комментарий
  • Как в MySQL создать атоматическое заполнение полей?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    2 комментария
  • Как сравнить даты в MySQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Как вариант я думал написать говнокод, который на PHP преобразует первоначальную дату диапазона из 26.05.2020 в "2020-05-26 00:00:00" а конечную дату в "2020-05-27 23:59:59" а потом сравнивать, но помоему это какая-то дичь.
    То есть по вашему преобразовывать ВСЕ строки таблицы для сравнения в формат НЕ ПОДДЕРЖИВАЕМЫЙ интерфейсом бд это ок, а 2 значения привести в стандарт - не комильфо...

    Обратите внимание на ответ Rsa97, Даты сравниваются как строки, по этому и сравнение идет именно в таком формате, от года к дате. Ваше преобразование делает строки вывернутыми по смыслу, то есть сортировка идет по дате дня, год "как бы вообще не учитывается".
    Ответ написан
    Комментировать
  • Почему из MySQL базы данных не выводится login?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    сессия хранит только элементарные типы, представляемые в виде строк. Что логично, ибо это суть файл, либо аналогичное хранилище. Для того чтобы работала подобная магия нужно:
    а) удалить из объекта все ссылки на ресурсы, которые будут мешать сериализации, если таковые имеются
    б) сериализовать объект и записать в сессию

    и в обратном порядке для чтения:
    а) Загрузить класс объекта который вы будете получать (иначе магии не получится)
    б) Десериализовать из сессии и добавить в объект все ссылки на нужные ресурсы, например ссылку на объект бд.
    Ответ написан
    Комментировать
  • Как объединить массивы json в Mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    concat, group_concat, хотя понятно что это все кривые решения и по уму с самого начала у вас должно все это хранится как многие ко многим.
    Ответ написан
    Комментировать
  • Как разделить полученные запросом данные по разным формам?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    сделать джоин субъектов и выбирать по вэа субжект.ид=субжектид или квесчн.ид_субжект=субжектид

    А можно подробнее?
    Можно, но разбор такого кода займет много времени,
    1)
    SELECT COUNT(DISTINCT question_text) FROM questions
    Абсолютно бесполезный дистинкт, так как у вас все записи уникальные (в теории), или отличаются вариантами ответов и тогда это разные записи, то есть ОЧЕНЬ ДОРОГАЯ операция у вас там просто прелеплена нашару.
    2) для ВСЕХ операций с бд предпочтительнее использовать int поля нежели текстовые.
    3)
    мне необходимо, чтобы данные соответствовали выбранному варианту (subject_title и subject_name),
    На самом деле нужно чтобы совпадал subjects.id (он потому и уникальный идентификатор!), который и надо передавать для выборки, а не какой-то subject_title или subject_name.
    4) в запрос для этого соответственно нужно добавить джоин субжектс, выбрать нужный subjects.id, который передали по клику, и тогда разделять ничего не придется, в выборке будут только поля, относящиеся к нужному субжекту.
    Ответ написан
  • Как сделать сортировку по возрасту (по убыванию) работников в таблице mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    используйте order by field_name desc/asc
    Ответ написан
    Комментировать
  • Обработка ajax запроса?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    нужно при клике на чексбокс ajax-ом получить/фильтровать товар, который выводи этот файл Product.php
    1) Чекбоксы что у вас фильтруют?
    2) В Product.php нет функционала, учитывающего более одного параметра, и то - только категорию.

    не понимаю как в обработчике ajax запроса, взять эти данные
    Плохо, значит пока еще слабо знаете свою предметную область. внизу вашего вопроса есть пример, эти данные там есть, что с ними делать зависит от того что нужно получить.

    надо ли обращаться к этому файлу Product.php
    В представленном виде он бесполезен для вашей задачи, нужно писать метод получения списка из произвольных параметров. Потом сформировать из списка хтмл с готовыми блоками и отдать его (сделать echo) обратно. Только в аяксе надо будет заменить dataType: 'html'
    Ответ написан
    3 комментария
  • Как правильно сделать запрос к таблице с под запросом на эту же таблицу с фильтром по полю?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    по уму у вас структура таблицы должна быть сформирована сразу во втором виде, + дататайм изменения, ибо сортировать по айди не лучший вариант, там могут быть нюансы, это поле не для этого предназначено.

    так же смотрите вот такой ответ или гуглите sql nested sets.
    Ответ написан
    Комментировать
  • Как удалить строки другой таблицы запросом SQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    вы присваиваете id набор айдишников вместо одного значения, если хотите чтобы ваша конструкция работала - используйте in()
    Ответ написан
    6 комментариев
  • Как задать и менять позицию элементов в таблице?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    два апдейта:

    апдейт `блабла` 
    сет `сорт` = позиция 
    где `ид` = ид_итема
    
    апдейт `блабла` 
    сет `сорт` = `сорт`+1 
    где `сорт` > позиция 
    и `ид_группы` = ид_группы
    Ответ написан
    2 комментария
  • Не заполняется таблица на phpMyAdmin значениями,что пользователь ввел во время регистрации.Ошибок не выдает.Что может быть причиной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Не заполняется таблица на phpMyAdmin значениями,что пользователь ввел во время регистрации.
    чтоооо??? Может "значения не попадают в базу"? При чем тут пхпмайадмин?
    Ошибок не выдает.
    Это не значит что их нет, смотрите логи или включите вывод ошибок.

    - Код оформите соответствующим образом, а не мешаниной букв.
    - Просмотрите логи и напишите какую ошибку выдает
    - кроме того у вас там что-то пишется в сессию, выдает результат или нет?
    - Кроме вопроса неплохо бы дать пояснения что вообще у вас происходит, а то телепаты заняты выявлениями нарушающих режим самоизоляции и не могут помочь...
    Ответ написан
    Комментировать
  • Почему при записи в бд php/mysql текста из textarea строка записывается не до конца?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Реальной причины вы так и не нашли? Первым делом я бы все же нашел строку на которой режет запись, а потом уже думал что делать. Ну и пробовал запросы с ней руками пробить.
    2) Реалэкейп все таки не лучший выход, использование подготовленных выражений уже давно стандарт для работы с бд. Это позволяет не придумывать велосипеды и работать с базой более свободно.
    Ответ написан
    Комментировать
  • Поиск между двумя timestamp в MySQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    А чего вы хотели? Для этого и делают датетайм, то есть налицо ошибка в проектировании структуры данных.
    Единственное решение будет построить запрос разбив время на два интервала, то есть в логике определяете если диапазон прыгает через 0 и бьете на 2 интервала,
    SELECT * 
    FROM tablename 
    WHERE 
    ('01:00:00' BETWEEN '23:00:00' AND '23:59:59') or 
    ('01:00:00' BETWEEN '00:00:00' AND '02:00:00')
    Ответ написан
    Комментировать
  • Как писать данные на каждый день в статистику - дублировать или пропускать?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    если вчера была температура 27 градусов, и сегодня 27, может метеорологам не стоит записывать каждый день температуру?
    Естественно писать, если эти параметры относятся к логированию и построению какой-либо статистики, и к DRY это никаким боком не относится.
    Ответ написан
  • Не запускается mySQL в xampp, что делать?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
    проверьте что он не переполнен, поставьте больше...
    Проверьте чем занят порт на который вешается мускуль
    Проверьте если в папке есть пид файл - его надо удалить.
    Ответ написан
  • Рационально ли использовать Redis в данном случае?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Из вопроса делаем вывод что а) данных не много б) они уникальны для пользователя в) запрос простой.
    200 000 * 15 = 3 000 000 000 запросов в день, учтем что подразумевается скорее всего рабочий день, пусть 8 часов, и нагрузка распределена примерно равномерно. 3М/8/60/60 = 104 запроса в секунду, пусть в пике загрузки это будет 300-400 запросов.
    Думаю пока вам хватит даже без масштабирования ресурсов, в дальнейшем при необходимости можно ввести кеширование, правда я не уверен что оно даст большой прирост, так как:
    1) Данные должны быть горячие, то есть кеш на такие данные должен быть короткий, а одинаковые запросы скорее всего сильно разнесены по времени, по этому кеш будет вечно протухшим.
    2) Данные на "узкие" запросы вообще плохо кешируются, так как содержат не массив выборки, а 1 строку, то есть получается много мелких данных вместо 20-30 списков на много строк.
    Ответ написан
    5 комментариев