Ответы пользователя по тегу MySQL
  • Как получить разницу одной и той же таблицы базы данных раз в час?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Не надо тебе делать полную копию таблицы. По какой логике нельзя поле добавить - я объясню. Чуваки, которые перед тобой работали, пользовались select * from employees... и вставляли это куда ни попадя. Поэтому сейчас если ты еще одно поле добавишь - упадет все, где есть вставка всех полей.

    Так вот, тебе нужна таблица-спутник. Четыре поля. Id этой таблицы, Id_employeer, Change_Date, Change_type.
    Далее ловишь изменение или добавление основной таблицы и в таблицу-спутник вставляешь данные, какой работник изменен и что с ним стало в Change_type: Insert, Update, Delete. Можно еще Id того, кто это изменение сделал.
    Ответ написан
    Комментировать
  • Как выполнить экcпорт данных из MS Access?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Осталось только подумать о обратной схеме: когда данные хранятся сразу в mysql таблицах, прилинкованных к акцессу. И пусть хоть обудаляются акцессовские файлы. :).
    Ответ написан
    Комментировать
  • Как сохранить несколько значений в переменную?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Доброго. Это массив называется. Сохранять данные из запроса в массив не нужно, когда ты пользуешься базой данных. Массив в базе данных - это ТАБЛИЦА.
    Ответ написан
    Комментировать
  • Как перенести данные из MS Access в MySQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Вот это всё забросьте и возьмите правильный инструмент: dbforge MySql, если возьмете русскую версию - она бесплатная. Там хороший импорт-экспорт и очень вероятно, этого уже будет достаточно. И вообще фунциональность ее много выше, чем стандартная тулза.
    Надо учесть, что в акцессе данные в 1251, а в MySql - Utf8.
    Ответ написан
  • Как объединить в перекрестный запрос 3 и больше таблиц?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Это акцесс+ms sql с высокой долей вероятности. Стоит поместить в правильное место, больше народу просмотрит. Это раз.

    У студента не должно быть сразу двух статусов, это два. Структура базы неверная. Надо переделать на верную, если в поле у студента есть время опоздания, любое значение, значит, он опоздунец. Если значения нет, Null - он молодец, на занятиях был.
    Понятна идея? Одно поле. Если значение в этом поле больше, чем время занятий - он пропустил. Если меньше, но есть - он опоздал. Если нет вообще значения - все ок.
    Ответ написан
    Комментировать
  • Можно ли использовать MS Access как редактор MySQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    просто так, подключиться и сразу писать запросы - нет, нельзя. А вот если к конкретной базе, установить ее параметры, установить конкретные таблицы - очень даже можно. Я так работаю и не жужжу. Точно так же делается, как подключение акцесса к ms sql
    Ответ написан
    Комментировать
  • Есть ли возможность как-то оптимизировать следующий запрос?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Как минимум за проверку наличия записи через count надо 10 суток гауптической вахты выписать. Юзай exists.

    Как максимум, попробуй объяснить, что именно ты тут пытаешься сделать. Потому что выглядит эта конструкция отвратительно.
    Правильный код лаконичен и краток. Если же есть дублирования одного и того же, то скорее всего там косяки.
    Ответ написан
  • Задачи и упражнения для SQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Читать Макса Грубера, "понимание sql". Примеры и задачи там есть. Я лично глубоко убежден, что более ничего не нужно. Прямо это Библия и Букварь одновременно.
    Ответ написан
    2 комментария
  • Как сделать выборку "И" и "ИЛИ" на MySQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Доброго. Я не буду давать вам готовый результат, а дам пищу к размышлению и один пример. Никакой Distinct не нужен, использовать его приходится в редких случаях. В остальном он говорит о том, что либо база спроектирована неверно, либо неверно написан запрос.

    select * from tbl_user where id_user in (select id_user from tbl_user_tag);

    Одна строка - и вот вам все пользователи, у которых есть хотя бы один признак.
    Не менее просто делается выборка всех пользователей, у которых есть все признаки, но это для самостоятельного размышления. :) Удачи.
    Ответ написан
  • Как правильно построить структуру БД (SQL)?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Это зависит от количества данных и видов запросов к ней. Представьте себе свои самые смелые фантазии (про размер базы данных, конечно), умножьте их на десять. Если больше миллиона строк не вышло - спокойно можно хранить в одной таблице, добавив признак, какого рода эта запись - плюс индекс по нему.
    Ответ написан
  • Как понять работу sql-запроса?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Попробуйте так. Результат одинаковый будет, но оптимизатор не станет выполнять лишний select
    SELECT `group_id` FROM `vkgroups` WHERE `group_id`
    IN (SELECT `group_id` FROM `vkmembers` ORDER BY `members` DESC LIMIT 0,20)

    Т.е. что вижу я тут странное. Вот это подзапрос, который в скобках. Он отбирает нечто, обратно это сортирует и берет первые 20 записей из результата.
    Условно, значения у вас идут от 10 до 100 - берутся записи от 100 и до 80. Фактически - возьми последние 20 записей
    SELECT `group_id` FROM `vkmembers` ORDER BY `members` DESC LIMIT 0,20

    Зачем делать из этого потом еще один запрос select * - не ведаю.

    И совершенно непонятно, зачем брать абсолютно все данные и их потом переворачивать. Добавьте, например, условие сюда же по дате, или брать не все данные, а половину только и скорость увеличится.
    Ответ написан
  • Почему не устанавливается внешний ключ?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Зачем Primary key стоит на обоих полях? В таблице Users не нужно это, обычный int и все.
    Ответ написан
    Комментировать
  • Как правильно создать архитектуру БД для нескольких сервисов?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Если будут связи между этими таблицами - например, информация на табло и техобслуживание связаны как-то, то я бы делал в одной. Если нет - в разных, потому что это изначально разные бизнес-процессы.
    В общем случае - зависит от объема работ. Если небольшое количество таблиц, то все в одной, если много - в разных. Просто исходя из удобства разработки.
    Ответ написан
    1 комментарий
  • Как создать представление с группировкой соседних строк?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Процедура? :)
    Ответ написан
  • Как ускорить множество INSERT в Mysql?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Конечно. Не делать это в цикле, а делать пакетно. Кстати, хорошо бы код показывать и объяснять, зачем такой цикл необходим.
    Ответ написан
  • Как хранить оценки комментариев пользователями?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Я бы развел в два разных поля, если уж желается максимальной производительности. Тогда понять, сколько за, сколько против - простой суммой можно будет, да. Но если со всей прямотой - можно и в одном поле типа инт хранить оба типа, пренебрежимо мала будет разница. Хранить сумму не надо, ее дешевле посчитать. За: 1, против -1, нормально.
    А вот дальше - ну, как минимум пригодится айпишник, чтобы одному не давать голосовать несколько раз, да? Еще одно поле.
    Если есть необходимость хранить данные их соцсетей, а сейчас модно хранить вообще все про юзера, то еще поле под ссылку на соцсеть и второе - на тип этой сети. Итого:

    rid (Pkey), u_vote, u_ip, u_soc_net, u_soc_net_type.

    Индекс только на поле u_vote в рамках данной задачи. Если нужна будет выборка по соц.сетям - то индекс на тип соцсети.
    Ответ написан
    4 комментария
  • Как удалить дубликаты в таблице MySql на 29 миллионов строк?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Я бы не стал на вашем месте удалять из таблицы ничего. А просто создал бы новую, уже без дублей. В плане потребления ресурсов - оно значительно экономней будет. И никто не мешает сделать так:
    1. Первые сто тысяч отобрал, запомнить id последней записи.
    2 .Пауза.
    3. Отобрал следующие сто тысяч начиная с последнего айди. Гоу ту пункт два.

    Все.
    Ответ написан
    Комментировать
  • Как создаются внешние ключи при работе с моделью БД?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Само ничего не образуется. Смысл ключей в дополнительном контроле и как что контролировать - определяет разработчик.
    Мое мнение - ключи обязательно должны быть. Иной дурак отключает их, ссылаясь на то, что без них быстрей, но это ровно до первого раза, когда у него в таблицах образовывается прелестная смесь из левых и правых данных.

    Проще всего ключи создавать в диаграмме. Открываете ее, помещаете необходимые таблицы, далее мышой цепляете нужное поле из одной таблицы и тащите его на вторую. Все. Ну и свойства задать, если нужно. По дефолту действия при обновлении/удалении запрещены, но иногда - опять же, вам, как разработчику, решать, когда можно все каскадно удалять, например.
    Удаляем товар из базы- значит, все его свойства уже не нужны. В то же время: удалять этот товар из счетов всех, кто его ранее покупал - не следует, а? Вот поэтому ключи сами не создаются.
    Ответ написан
    1 комментарий
  • Магия mySQL, или почему DELETE длится вечность?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Запихните результат во временную таблицу и сделайте выборку из нее. Где уже не надо будет выполнять concat.
    Ответ написан
    Комментировать
  • С чего начать изучение баз данных(sets, normalization, crud..)?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Не начинать с реляционной алгебры и теории множеств.

    Прочитать толковый учебник тип Грубера, "понимание sql" и просто написать себе самому - ну, хоть телефонный справочник. Сделать поначалу одну таблицу, вставку, обновление, удаление, выборку. Потом подумать - какие операции являются лишними, какие поля задублированы, как их можно было бы вынести в другие таблицы - вот это будет оптимизация и нормализация.

    Результаты раздумий выложить толковому человеку с просьбой помочь - и всё. А вот эта вся фундаментализация прямо сразу - вернейший способ отбить все понимание сразу и навсегда.
    Ответ написан
    2 комментария