Задать вопрос
Ответы пользователя по тегу MySQL
  • Как сделать выбобрку из БД по количеству "послдение 5" и "и все остальные с таким-то значением в поле"?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    если все выбирать одним запросом - юнион и подзапрос:
    ...
    where id not in (
        SELECT `id` 
        FORM `data` 
        ORDER BY date DESC 
        LIMIT 5
        ) 
    and `tak` = 12
    Ответ написан
    Комментировать
  • Как удалить дубликаты из бд размером больше 200 млн записей?

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

    PS: parent | parent_id - чем отличается???
    Ответ написан
    2 комментария
  • Как сделать вывод из базы данных используя PDO?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);
    var_dump($_POST);
    var_dump($data);
    Ответ написан
    Комментировать
  • Как сформировать правильно sql запрос для сообщений в чате?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Чета у вас какая-то странная таблица, user_id_from и user_id_to понятно, а user_id это что и зачем? date должно быть у вас типа datetime, чтобы понимать какое сообщение за каким идет. Соответственно и ORDER BY `date` нужно.
    Ответ написан
    3 комментария
  • Как поменять ситуация после переноса категорий в джумле?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее всего связь была по полю id, которое вы не перенесли.
    Ответ написан
    Комментировать
  • Почему PDO выдаёт фатальную ошибку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Ключи не могут задаваться плейсхолдерами
    2) Данные должны передаваться по отдельности, в этом весь смысл подготовленных выражений.
    Запрос сначала создается, а потом в места обозначенные плейсхолдерами можно передавать любую строку, она будет воспринята именно как строка, и не возникнет проблем с символами, задающими какие-то значимые настройки в запросе. То есть подготовленные выражения четко разделяют запрос и данные, во избежания путаницы со спец символами.
    Ответ написан
    Комментировать
  • Как добавить новую колонку к выводу SELECT value?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Проверить индексы на таблицах, с такими объемами у вас все должно летать.
    2) Кэширование используется на часто вызываемых запросах, где не критично отставание от точных хранимых данных в пределах некоторго заданного временного интервала, например список последних новостей на сайте изменяется не часто, а запрашивается постоянно, есть смысл хранить его в кеше хотя бы 15-30 минут. А у вас ситуация ровно обратная - запрос делается редко, и данные нужны актуальные.
    3) к п.1 нужно соответственно добавить проверку, как работают запросы и используются индексы, explain в руки и вперед.
    Ответ написан
    9 комментариев
  • Как кэшировать / оптимизировать результат запроса MySQL в Wordpress, не создавая еще большей нагрузки?

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

    Условно: выбираете топ 10 количества просмотров игр, кладете в кэш на час, и пока кэш существует в базу не лезете, тащите из кэша. Как только кэш автоматически очищается - делаете еще раз запрос, опять кладете в кэш... Таким образом вместо 500 запросов в час у вас будет 1 запрос, все остальное будет тащиться из кэша, и данные будут не старше часа по актуальности. Можете сократить / увеличить время кеширования и таким образом балансировать в плане нагрузка/актуальность данных.
    Ответ написан
    4 комментария
  • Insert if not exist MYSQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    insert с WHERE как бы не сосуществуют. Вы можете либо использовать if, либо сделать эту пару ключей уникальной, и использовать insert on duplicate key ignore.
    Ответ написан
    7 комментариев
  • Как подключиться к MySQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Нет, если наружу база не смотрит, а обычно так и есть. И это нормально. На самом деле это обычно не нужно. С чего вдруг понадобилось так активно работать на хостинге с базой? Локально создаете бд, экспортируете, на хосте поднимаете. Ну или если это более-менее нормальный движок с поддержкой миграций вообще через них.
    Ответ написан
    Комментировать
  • SQL запрос выборка из 2х таблиц?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - всегда форматируйте код, и вам легче, и ошибок меньше, и людям приятно смотреть...
    SELECT id name // выполнится, но не так как задумано, не хватает запятых
    FROM table1 
    LEFT JOIN b as // здесь все совсем плохо
    (  
               SELECT worker_id date value //тут уже даже не выполнится
               FROM table2 
               WHERE data = 'интересующая дата'  //date же!
    ) 
    ON table1.id = b.worker_id //могло бы даже работать, но выше куча ошибок
    WHERE date = 'null' // так работать не будет. date IS NULL будет, но у вас вроде нужно value проверять?

    Кроме прочего - тут должен был быть просто джоин 2 таблиц, без всяких танцев, ну и дата судя по всему должна быть в интервале, а не одно число, хотя тут уже не совсем ясно что там вообще и как хранится. Так же имена полей надо обрамлять `обратными кавычками`
    Ответ написан
    2 комментария
  • Как сделать вывод данных с текущего аккаунта через MySQL и PHP?

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

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

    и где может быть моя ошибка.
    В произвольном месте. По этому проверяют по порядку
    1) Что передается в data в яваскрипте (console.log)
    2) Что передается в на сервер (смотрим нетворк браузера)
    3) Что получили на стороне сервера (var_dump и тот же нетворк, смотрим ответ аякса)
    4) Проверяем запрос, и с таким заданием плейсхолдеров бинд не нужен:
    $stm = $this->db->prepare($sql);
    $stmt->execute($params);
    Ответ написан
    Комментировать
  • Получить массив в строке из mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Ответ написан
    Комментировать
  • Как сделать случайную выборку записей?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Задача на самом деле нетривиальная, но очень распространенная. Одним из самых "качественных" вариантов решения для стандартной слаборазряжённой базы является выборка максимального и минимального значения первичного автоинкрементного ключа, а затем формирование набора из N случайных чисел между ними средствами языка (пхп, ноды, го, не суть), где N тем больше, чем больше разряженность базы. Далее делается выборка с in, и уже по результатам выборки берется случайная запись из группы полученных. Насколько я помню это самый эффективный и быстрый способ.
    Ответ написан
    Комментировать
  • Какая лучше практика для создания уникального числа и запись его в таблицу, с проверкой на уникальность в этой же Таблице?

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

    интеджер от 5 до 7 символов
    В идеале, если это пин, он должен содержать какое-то определенное количество символов. Это удобно по многим причинам.

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

    2 вариант - генерация "налету", например через микротайм, или ранд, не суть. В таком случае конечно же не нужно делать проверку через do while, достаточно сделать селект со сгенерированным значением, если запрос вернул строку - перегенерировать, если вернул пустой результат - можно добавлять. В любом случае поле нужно сделать уникальным, дабы избежать повторений.
    Ответ написан
    7 комментариев
  • Как правильно делать соединение с базой данных?

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

    Так же нет необходимости закрывать соединение, оно само автоматически закроется по завершении пхп скрипта.

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    селект, джоины, вэа, энд, ор...
    Ответ написан
  • Почему не сохраняется JSON в БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Смотри ошибки в логах
    Проверяй содержимое переменных
    Проверь запрос руками из консоли или из пхпмайадмина
    Думай головой
    Ответ написан
    Комментировать