Задать вопрос
Ответы пользователя по тегу MySQL
  • Как искать по MySQL цифры начинающиеся с 0 (полнотекстовый поиск)?

    @justpusher
    Сделайте дополнительное поле, участвующее в поиске, но не отображаемое пользователю.
    При вставке записи с "кв. п06" в дополнительное поле заносите "6 06".
    Ответ написан
    Комментировать
  • Почему не подключается к БД?

    @justpusher
    Если у вас не Windows, когда вы подключаетесь к mysql по 127.0.0.1, соединение идёт по сети, а когда по localhost - через unix-socket. php ищет нужный сокет в настройках php.ini, а mysql - в my.cnf. Вероятно у вас в конфигах разные настройки сокетов прописаны.
    Ответ написан
    Комментировать
  • Почему дважды происходит выборка при SQL запросе?

    @justpusher
    У вас mfo "Е-Капуста" соответствует 4 записи в cpl_mfo_loans.
    Это значит, что после последнего джойна у вас будет 4 строчки для Е-Капусты, в которых поля всех таблиц кроме cpl_mfo_loans будут одинаковые. Вы их объединяете с помощью group_concat, поэтому получаете 4 раза одно и то же. Я советую вам убрать group_concat и поставить SELECT *, тогда вам будет понятнее, какие там данные.

    P.S. на будущее: выкладывайте структуру таблиц и дампы в виде SQL-запросов (CREATE TABLE, INSERT), по скриншотам на глаз разбираться очень сложно.
    Ответ написан
    Комментировать
  • Как сделать выборку из таблицы с учетом данных в другой таблице?

    @justpusher
    1) в запросе нет сортировки - вам же нужно пользователя с наименьшей датой
    2) NOT IN(SELECT user FROM tasktemp) - это исключит всех пользователей, которые фигурируют в tasktemp, а вам нужно только исключить попадание задачи к тому же пользователю повторно.

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

    Очень рекомендую пройти курс www.sql-ex.ru
    будете значительно увереннее себя чувствовать в sql.
    Ответ написан
    Комментировать
  • Как организовать свой порядок сортировки в YII2?

    @justpusher
    Обычно используют отдельное поле, order или position, и отдельно его заполняют. Если только средствами ORM - то только beforeSave/afterSave (мне больше нравится первое). Если можете написать свой запрос для сохранения - можете решить одним запросом INSERT с подзапросом.

    Если очень хотите средствами ORM и одним запросом - можете в поле order вставлять текущую дату-время с микросекундами. Но это извращение, я считаю. Нет ничего страшного в двух запросах.
    Ответ написан
    Комментировать
  • Какой тип мьютекса использовать?

    @justpusher
    Если все процессы на одном сервере - лучше использовать flock, он проще и надёжнее.
    Например, в случае рестарта mysql или потери соединения с ним по другой причине - вы теряете блокировку, полученную GET_LOCK, но можете про это и не узнать.
    Если же вам нужно получать блокировки на разных серверах, то GET_LOCK может выручить. Но внимательно ознакомьтесь с подводными камнями. Например, в старых версиях mysql повторный вызов GET_LOCK отменяет предыдущие блокировки, а в новых - получает новые блокировки параллельно.

    P.S. если вам блокировка нужна для выполнения простых действий в таблице, типа выборки нового задания для обработки, используйте SELECT FOR UPDATE.
    Ответ написан