• Почему запрос не работает корректно?

    @Akina
    Он возвращает большинство строчек правильною. Но 3 и 4 столбец иногда равен 0 (хотя там должны быть какие то значения).

    Никому они ничего не должны. Если там ноль, значит, в таблице boarding_passes нет соответствующих записей. И не надо пытаться даже оспаривать это утверждение. Чудес - не бывает.

    Полагаете, результат всё же неверен? CREATE TABLE + INSERT INTO с исходными данными, на которых наблюдается описанная проблема - в студию. Ну и не забываем указать точные сведения об используемой СУБД и её точной версии.
  • Получение массива имен из определенной таблицы PHP + MySQL?

    @Akina
    Нужно получить массив столбца имен из этого, и отправить в ajax запрос в js


    Нужно - получайте и отправляйте, мы совершенно не против.

    А вопрос-то какой?
  • Cron или планировщик заданий mySQL?

    @Akina
    Adamos, пэхапэшник, который ни ухо ни рыло за пределами PHP - это норма. А вот любые отклонения от этого - увы, экзотика. Ещё хуже дела обстоят, если это не чистый пэхапэшник, а спец по некоему фреймворку.
  • Cron или планировщик заданий mySQL?

    @Akina
    Adamos, это где же усложнение-то? скорее наоборот.

    Вы, как обычно любят пэхапэшники, валите всё в одну кучу. В то время как раздача призов - это не один процесс, а несколько связанных по обработке данных процессов, связанных тем, что следующий в цепи начинает выполняться только после завершения предыдущего и используя полученные этим предыдущим данные. В то же время по выполнению они абсолютно независимы. Раздавать призы можно и через секунду после расчёта призовых, и через неделю. Главное, чтобы всё уже было рассчитано.

    Те этапы, которые занимаются детектированием наступления времени раздачи, расчётом необходимых параметров раздачи, проверкой незавершённости предыдущего инстанса раздачи и восстановлением при обнаружении - они выполняются исключительно на MySQL данных, и потому средствами MySQL и его планировщика. И если выполнять их средствами внешнего планировщика - то это плюс нагрузка на сервер и ноль профита. Плюс снижение надёжности системы, потому что увеличилось количество потенциально сбойных точек .

    А вот этапы, которые занимаются фактической раздачей на основе рассчитанных параметров - они выполняются средствами PHP, потому как у MySQL нет штатных инструментов взаимодействия с внешним API. Будь такой инструмент (например, подключена внешняя UDF, которая способна выполнить общение с кассой через её API) - и этот этап тоже выполнялся бы на стороне MySQL и его планировщиком.
  • Cron или планировщик заданий mySQL?

    @Akina
    KarambyG,
    а планировщик mysql, я так понимаю ты указываешь дату и время, когда турнир завершится, им будут назначены всем призы, и когда это время наступает, то призы раздаются. А если сервер в это время залагал, или вообще упал.

    Неверно.

    Планировщик регулярно выполняет event procedure (например, ежеминутно). Процедура проверяет наличие записи, которая соответствует двум условиям. Первое - для неё наступил момент раздачи призов, однако отсутствует пометка о завершении раздачи. Второе - процедура раздачи для в данный момент не выполняется Если такая запись имеется - для неё запускается экземпляр процедуры раздачи призов. Этот экземпляр должен обрабатывать любые ситуации - как первый запуск, так и случай, когда экземпляр процедуры уже запускался, но по некоей причине не выполнился до конца.

    Adamos,
    тут еще большой вопрос, что именно включает в себя процедура раздачи призов.

    Тут нет вопроса.

    Планировщик MySQL выполняет все необходимые операции в рамках сервера БД и подготавливает все необходимые для раздачи призов данные. А потом уже PHP через CRON или иным способом поллит БД, обнаруживает сведения о необходимости раздачи, и в соответствии с ними выполняет внешние для MySQL операции, включая и общение с кассой, буде нужно.
  • Cron или планировщик заданий mySQL?

    @Akina
    KarambyG,
    а БД он не сильно нагружает?

    Гораздо меньше, чем CRON.
  • Cron или планировщик заданий mySQL?

    @Akina
    Полностью согласен с товарищем Adamos - никакие периодические действия тут нахрен не нужны. Использование планировщика бессмысленно, а отдельное поле статуса избыточно.

    с планировщиком задач mysql знаком? может для моего случая лучше его использовать вместо крона?

    Да, если бы задача действительно требовала периодически выполняемого действия, встроенный планировщик MySQL был бы правильным решением, а внешний CRON - решением избыточным.

    хотелось бы чтобы прызы выдавались сразу же после завершения турнира

    Выдача призов НИКАК не связана со статусом турнира. Она связана только с заданной точкой времени. Просто в данном конкретном случае значение этой точки хранится в поле даты-времени конца турнира таблицы туриров.

    И вот для организации НЕЗАВИСИМОЙ от процесса определения статуса турнира процедуры раздачи призов действительно нужно использовать планировщик. И именно планировщик MySQL.
  • Как составить правильный SQL запрос для выборки данных?

    @Akina
    надо выбрать все уникальные значения в столбце month, которому соответствует наименьшее число со столбца price.

    А если минимальное значение в месяце - в нескольких записях одновременно?
  • Почему Ethernet работает только в определённых случаях?

    @Akina
    Сетевой адаптер Realtek GbE Family Controller (PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15) работает с Ethernet кабелем, вставленным в LAN-розетку.

    Какая скорость/дуплекс при этом согласуется? работает ли он если эту скорость установить "жёстко"? то же - для всех скоростей ниже этой.

    ноутбук MSI и камера Insta 360 Pro II показывают, что Ethernet кабель не вставлен, хотя разъём вставлен до конца. Если этот же кабель вставить в другой роутер, то всё работает.

    Какая скорость при этом согласуется?
    Устанавливается ли связь, если на коммутаторе с обратной стороны LAN-розетки установить принудительно такую скорость?
  • Как определить с помощью pathping проблему на стороне клиента?

    @Akina
    Александр Хорьков,
    провайдер уверяет меня, что на линии у него все хорошо, и что проблема исключительно на моей стороне.

    Если Вы читали договор так же, как и мой совет - то я не удивлён. Я вроде русским по белому сказал, ЗАЧЕМ надо читать договор и ЧТО ИМЕННО в нём следует искать. А если там найдётся положение о том, что провайдеру следует верить на слово - то кто в этом виноват?

    Провайдер может уверять сколько угодно. Но или он доказывает, что проблема не у него (точнее, за пределами его зоны ответственности), или устраняет проблему.

    PS. Совет использовать результат работы pathping - безграмотен. Для диагностики проблемы он почти бесполезен.
  • Как поменять интерфейс для выхода в интернет?

    @Akina
    Сведения о настройках интерфейсов и маршрутах - в студию. Максимально полные.

    Как правильно направить трафик на модем в данном случае и не лишится локалки?

    1) Получить сведения о ВСЕХ подсетях, нужных в локальной сети.
    2) Удалить маршрут по умолчанию через интерфейс в локальную сеть.
    3) Добавить маршруты во все нужные подсети через интерфейс в локальную сеть.

    Если имеет место интерференция подсетей - выбрать, какая из двух нужна. Можно дробить - вплоть до отдельных узлов. При интерференции узлов - не лечится.
  • Как определить с помощью pathping проблему на стороне клиента?

    @Akina
    что делать в данной ситуации

    Читать договор. Там должен быть описан порядок действий при возникновении проблем.

    может быть такое что проблема у провайдера а не у меня ?

    Да, может.
  • Как безболезненно изменить модель mysql в существующей бд?

    @Akina
    1. В любом случае следует сперва построить новую модель. А потом проанализировать различия и понять, болезненно оно будет или без...

    2. Быстро только кошки родятся...
  • Стоит ли добавлять index для полей таблицы EAV?

    @Akina
    Vitsliputsli,
    имеем тяжелый "холодный" запуск во время которого будут создаваться эти индексы в таблице в памяти.

    В памяти как раз можно создать структуру со всеми индексами, а потом грузить в неё данные. Запись достаточно компактна, количество невеликое - вот не могу посчитать такой холодный старт тяжёлым, ну никак.

    Зато в этом случае чхать на размер buffer pool - таблица всегда в памяти и почти что сама себе кэш.
  • Стоит ли добавлять index для полей таблицы EAV?

    @Akina
    Вместо малопонятного описания выложите полные CREATE TABLE обеих таблиц. Добавьте пример данных (скажем, 2 товара, по 3 свойства на товар) и запрос на фильтрацию (скажем, который должен отобрать только один товар из двух).

    Товаров будет около 10,000. Спецификаций к ним в среднем по 20 записей. Это получается что по идее, записей будет меньше одного миллиона.

    Ни о чём... обе таблицы и все их индексы стопудово будут закэшены в памяти. Так что лишний индекс от производительности особо и не откусит.

    Можно вообще закэшить статические таблицы, создав копию с ENGINE = Memory, только там создавать индексы, и поплёвывать на производительность дисковой подсистемы. А изменения класть обратно триггерами.

    -----------------------------

    Дополнительный вопрос касательно индексов: Нужно ли добавлять индексы в полиморфную таблицу?

    Индексы добавляют для обслуживания конкретных запросов. Ну не считая контроля на уникальность, конечно, но это сейчас не при чём.

    Индекс используется не вообще, а в момент выполнения конкретного запроса. В этот момент данные таблиц известны, фиксированы и (если не считать dirty и phantom reads) неизменны - то есть таблица динамически полиморфна исключительно в динамике, но не в статике, не в момент выполнения запроса. А потому эффективность индекса никак не зависит от того, каноническая связь или полиморфная. И, как следствие, необходимость создания индекса тоже не зависит от типа связи.
  • Как написать SQL запрос для выборки записей, который учитывает кол-во существующих в таблице записей с таким же ключом?

    @Akina
    Ну обычное же реляционное деление... или, если поиск ведётся для строго одного товара, то фасетный поиск (впрочем, какая разница, ибо первое - один из методов второго).
  • Выборка из POST массива через запятую?

    @Akina
    При небольшом количестве записей в таблице users используйте
    $query = "SELECT * FROM users WHERE FIND_IN_SET(login, '".implode(',', $escaped_nk)."');";
  • MySQL поле с типом JSON как искать по значению внутри многомерного массива и сделать для него индекс?

    @Akina
    запрос типа этого, не работает

    Пока ты будешь работать с JSON как с текстом, у тебя ничего не будет нормально работать. Следует использовать JSON-функции.

    Впрочем, на выходе всё одно будет фуллскан.

    по массивам я не представляю как сделать такой индекс

    Для целых можно было бы построить multivalued index. А с GUID этот номер не пройдёт.