Задать вопрос
Профиль пользователя заблокирован сроком «навсегда» без указания причины
Ответы пользователя по тегу MySQL
  • Что выбрать: primary key или unique для уникального foreign key?

    @MikhailEdoshin
    Если для учебного проекта, то лучше как primary ID.
    Ответ написан
    Комментировать
  • Sсhemaless для MYSQL, как?

    @MikhailEdoshin
    Schemaless. Shemaless — это, надо думать, присказка Горлума-извращенца.
    Ответ написан
    1 комментарий
  • Генерация 1млн билетов со случайными уникальными ID

    @MikhailEdoshin
    Мне нравится вариант с перемешать заранее, но если вам требуется не настоящая случайность, а просто чтобы номера не выглядели последовательными, то можно использовать последовательные номера с перемешанными битами. Например, если взять пять бит, перенумеровать биты по порядку справа налево 5, 4, 3, 2, 1 и перемешивать их, например, как 4, 1, 2, 5, 3, то последовательность 1, 2, 3, 4, 5, 6 превратится в 8, 4, 12, 16, 24, 20.

    PS: Неужели MySQL затормозит на индексе в 1 млн. чисел?
    Ответ написан
  • Подзапрос в условии ON для LEFT JOIN'а в MySQL

    @MikhailEdoshin
    А если LIMIT убрат, он со всеми записями соединит? В SQLite, например, можно использовать внутренний идентификатор ряда без лимита, т. е. это было бы:

    SELECT u.*, s.*
      FROM user u
      JOIN stat s ON s.rowid = (
           SELECT t.rowid
             FROM stat t
            WHERE t.user_id = u.id
         ORDER BY t.date DESC)
     WHERE u.id = ?
    

    но там явно оговаривается, что (SELECT y ...) в выражении возвращает первую совпавшую запись, а не все; не знаю, как с этим в MySQL.
    Ответ написан
  • mysql: выборка дней по порядку

    @MikhailEdoshin
    Мне кажется, тут не обойтись без таблицы дней в каком-то виде. Хотя бы как таблицы дней, привязанной к таблице событий — при создании события во вспомогательной таблице создавалось бы нужное число записей для диапазона дат. Но чтобы заполнять такую таблицу все равно потребуется хотя бы массив чисел от 1 до максимального количества дней в событии.

    В SQLite можно создавать виртуальные таблицы — там, наверное. можно и генерировать даты по запросу. MySQL не знаю — может быть там есть какие-то процедуры, которые могут возвращать выборку? Или, например, создать view из 31 дня, из 12 месяцев и из нужного числа лет, и, соединяя их в нужных комбинациях, генерировать таблицу дней.
    Ответ написан
    Комментировать
  • Сборка .app на Mac с Python, Qt, PyQt, MySQL с использованием py2app?

    @MikhailEdoshin
    Во втором случае у вас новый install path длинее, чем старый — ничего не выйдет. Там тупо под более длинный путь места нет. Нужно перекомпилировать библиотеку и перелинковать то, что с нею линкуется. Или, проще, сделать путь короче — положить библиотеку рядом с executable, а не в Frameworks (это ведь не фреймворк все равно); тогда install path будет @executable_path/libqsqlmysql.dylib :)

    (Есть, кстати специальная опция у линковщика -headerpad_max_install_names, специально для перебивания, как я понимаю, но вряд ли она была включена.)
    Ответ написан
    6 комментариев
  • Как подключить стороннюю библиотеку на C++ к проекту в Xcode 4.2?

    @MikhailEdoshin
    Насчет XCode не скажу, но скажу, как вручную. Раз это C++, то, скорее всего, надо будет ее перекомпилировать (собственно, они и сами это пишут). В Mac OS X при линковке запоминается полный путь к библиотеке (который может включать специальные переменные @executable_path, @loader_path и еще один хитрый ключ) — соответственно при линковке библиотеки нужно будет правильно выставить этот путь в зависимости от того, где собираетесь держать библиотеку. Когда библиотека готова, для линковки ее к проекту можно указать ее непосредственно ее в командной строке, или же через ключи -L(директория) -l(краткое имя библиотеки); или, если она собирается framework'ом, то ключами -F(директория) -framework(имя фреймворка).
    Ответ написан
    1 комментарий
  • Как сортировать внутри GROUP BY?

    @MikhailEdoshin
    Я не эксперт в SQL, но в sqlite, например, это будет примерно так:

      SELECT *
        FROM oper o
       WHERE cost = (
             SELECT MAX(cost)
               FROM oper p
              WHERE p.id_country IS o.id_country)
    ORDER BY id_country;

    Предполагается, что cost уникален (во всяком случае внутри страны).
    Ответ написан
    1 комментарий
  • Схема хранения изменяющихся данных с историей

    @MikhailEdoshin
    Вообще натуральная модель, насколько я понимаю, будет такой:

    Таблица 1. Vehicle (ID, Last Reading ID).

    Таблица 2. Reading (ID, Vehicle ID, Date, и измеренные значения: Fuel, Oil, Tire Pressure, и т. д.).

    Если она не устраивает по каким-то соображениям, тогда уже переходить к другим моделям. Пока что для меня, например, неочевидно преимущество хранения разнородных значений в одном поле. Да, это всё числа, но если вдруг добавится нечисловое значение, придётся существенно менять модель.
    Ответ написан
    Комментировать