Задать вопрос
  • Как вывести через IN значения попорядку в SQL?

    Rsa97
    @Rsa97
    Алексей Лебедев: Логи обычно по времени сортируют, и для нормальной формы связка многие-ко-многим делается промежуточной таблицей, а не списком.
  • Как вывести через IN значения попорядку в SQL?

    Rsa97
    @Rsa97
    Алексей Лебедев: Пока список id небольшой и нагрузка на сервер небольшая, ничего страшного в этом нет, замедление будет неощутимо.
    Но вообще, сортировка по id - не лучшая идея, это нарушение первой нормальной формы, согласно которой порядок расположения строк в таблице сам по себе не несёт никакой информации. Может проще создать дополнительное поле, по которому будет идти сортировка?
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    егор михеев: Объединение множеств - это JOIN в целом. Если не накладывать условие в ON, то все варианты работают одинаково, к каждому элементу левого множества добавляется элемент правого множества:
    {1, 2} JOIN {1, 3} => {1|1, 1|3, 2|1, 2|3}
    Если добавляется условие, то в результат попадают только комбинации, соответствующие условию (JOIN, CROSS JOIN и INNER JOIN - синтаксически эквивалентны):
    {1, 2} INNER JOIN {1, 3} ON left = right => {1|1}
    Если надо, чтобы элемент левого множества включался в результат даже если для него нет подходящего элемента в правом множестве, используется LEFT JOIN:
    {1, 2} LEFT JOIN {1, 3} ON left = right => {1|1, 2|NULL}
    Аналогично RIGHT JOIN в любом случае включает все элементы из правого множества:
    {1, 2} RIGHT JOIN {1, 3} ON left = right => {1|1, NULL|3}
    В SQL есть ещё не поддерживаемый в MySQL OUTER JOIN, в нём элементы обоих множеств включаются в любом случае:
    {1, 2} OUTER JOIN {1, 3} ON left = right => {1|1, 2|NULL, NULL|3}
  • Проблема с отправкой данных в базу. Где может быть ошибка?

    Rsa97
    @Rsa97
    Helmut König: А в логе запросов /var/log/apache2/access.log обращения к core/modules/newsadd/action.php есть?
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    SELECT * 
         FROM `category` AS `lvl1`
         LEFT JOIN `category` AS `lvl2` ON `lvl2`.`parent_category_id` = `lvl1`.`id`
         LEFT JOIN `category` AS `lvl3` ON `lvl3`.`parent_category_id` = `lvl2`.`id`
         WHERE `lvl1`.`parent_category_id` = 0
         ORDER BY `lvl1`.`name`, `lvl2`.`name`, `lvl3`.`name`
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    егор михеев: Да, это если заранее неизвестен максимальный уровень. Если он известен и фиксирован (скажем, всегда третий), то можно написать несколькими JOIN'ами получение конкретного уровня.
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    егор михеев: С уровнями - возможно, но надо писать встроенную процедуру, считающую уровень для строки (то есть проходящую от сроки до корня), затем делать выборку всех строк с уровнями, затем по этой таблице выбирать максимальный уровень и все строки с таким уровнем. Сделать можно, но работать будет крайне медленно.
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    егор михеев: А ничего сложного в JOIN`ах нет, это просто функции из теории множеств. В данном случае берётся множество строк из таблицы `category` и множество уникальных (DISTINCT) `parent_category_id` из неё же. Затем для каждой строки первого множества (LEFT) справа добавляются (JOIN) по очереди все строки, соответствующие условию объединения (ON). Поскольку в правом множестве значения из условия уникальные, то каждой левой строке будет дописана одна правая ,если строка является родителем и её `id` есть среди `parent_category_id`, или ничего (NULL), если такого `id` там нет.
    Остаётся во WHERE выбрать строки, имеющие NULL в нужном поле.

    Первое множество (cat):
    +----+--------------------+--------------+
    | id | parent_category_id |     name     |
    +----+--------------------+--------------+
    |  1 |                  0 | Авто         |
    |  2 |                  0 | Авто         |
    |  3 |                  0 | Раздел 3     |
    |  4 |                  0 | Раздел 4     |
    |  5 |                  1 | Раздел 1.1   |
    |  6 |                  1 | Раздел 1.2   |
    |  7 |                  1 | Раздел 1.3   |
    |  8 |                  1 | Раздел 1.4   |
    |  9 |                  5 | Раздел 1.1.1 |
    | 10 |                  5 | Раздел 1.1.2 |
    | 11 |                  2 | Раздел 2.1   |
    | 12 |                  2 | Раздел 2.2   |
    | 13 |                  3 | Раздел 3.1   |
    | 14 |                  3 | Раздел 3.2   |
    | 15 |                  3 | Раздел 3.3   |
    | 16 |                  3 | Раздел 3.4   |
    | 17 |                 13 | Раздел 3.1.1 |
    | 18 |                 13 | Раздел 3.1.2 |
    +----+--------------------+--------------+


    Второе множество (sub):
    +--------+
    | parent |
    +--------+
    | 0 |
    | 1 |
    | 2 |
    | 3 |
    | 5 |
    | 13 |
    +--------+

    Результат объединения LEFT JOIN по условию в ON:
    +--------+------------------------+--------------+------------+
    | cat.id | cat.parent_category_id |   cat.name   | sub.parent |
    +--------+------------------------+--------------+------------+
    |      1 |                      0 | Авто         |          1 |
    |      2 |                      0 | Авто         |          2 |
    |      3 |                      0 | Раздел 3     |          3 |
    |      4 |                      0 | Раздел 4     |       NULL |
    |      5 |                      1 | Раздел 1.1   |          5 |
    |      6 |                      1 | Раздел 1.2   |       NULL |
    |      7 |                      1 | Раздел 1.3   |       NULL |
    |      8 |                      1 | Раздел 1.4   |       NULL |
    |      9 |                      5 | Раздел 1.1.1 |       NULL |
    |     10 |                      5 | Раздел 1.1.2 |       NULL |
    |     11 |                      2 | Раздел 2.1   |       NULL |
    |     12 |                      2 | Раздел 2.2   |       NULL |
    |     13 |                      3 | Раздел 3.1   |         13 |
    |     14 |                      3 | Раздел 3.2   |       NULL |
    |     15 |                      3 | Раздел 3.3   |       NULL |
    |     16 |                      3 | Раздел 3.4   |       NULL |
    |     17 |                     13 | Раздел 3.1.1 |       NULL |
    |     18 |                     13 | Раздел 3.1.2 |       NULL |
    +--------+------------------------+--------------+------------+
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    егор михеев: Для нормальной работы с уровнями надо добавлять ещё одно поле - level, иначе придётся писать встроенную функцию, рассчитывающую уровень для каждой строки.
  • Как сделать выборку всех категорий нижнего уровня в дереве категорий?

    Rsa97
    @Rsa97
    егор михеев: Вот ваша таблица в виде дерева:
    1 - Авто
        5 - Раздел 1.1
            9 - Раздел 1.1.1
            10 - Раздел 1.1.2
        6 - Раздел 1.2
        7 - Раздел 1.3
        8 - Раздел 1.4
    2 - Авто
        11 - Раздел 2.1
        12 - Раздел 2.2
    3 - Раздел 3
        13 - Раздел 3.1
            17 - Раздел 3.1.1
            18- Раздел 3.1.2
        14 - Раздел 3.2
        15 - Раздел 3.3
        16 - Раздел 3.4
    4 - Раздел 4

    Потомки есть только у разделов 1, 2, 3, 5, 13
    Вот результат моего запроса:
    | 4  | Раздел 4
    | 6  | Раздел 1.2
    | 7  | Раздел 1.3
    | 8  | Раздел 1.4
    | 9  | Раздел 1.1.1
    | 10 | Раздел 1.1.2
    | 11 | Раздел 2.1
    | 12 | Раздел 2.2
    | 14 | Раздел 3.2
    | 15 | Раздел 3.3
    | 16 | Раздел 3.4
    | 17 | Раздел 3.1.1
    | 18 | Раздел 3.1.

    Ни один раздел, имеющий потомков в выборку не попал.
  • Имеем 4 списка значений по 100 гб. Как получить значения входящие во все списки?

    Rsa97
    @Rsa97
    ruplace: Зачем постоянные сортировки? Список обратного индекса сам индексируется средствами БД, так что он уже отсортирован для выборки. Да и сама выборка элементов списка может идти через JOIN'ы, то есть алгоритмами СУБД. Сортироваться при этом будет только результирующая таблица, но она в любом случае будет сортироваться после ранжирования.
  • Почему не проходит внутренний звонок?

    Rsa97
    @Rsa97
    Вячеслав Барсуков: Я в принципе не вижу в этом диалплане, как может возникнуть такая ошибка. Единственное место, где есть такой Gosub - экстеншин 1234 контекста [demo].
    Включите в консоли уровень логирования 5 (core set verbose 5), позвоните на внутренний номер и покажите прохождение вызова по диалплану.
  • Как реализовать связь многие ко многим на сайте?

    Rsa97
    @Rsa97
    Владимир: Так Вы условие выборки постов то добавьте после WHERE, ну или WHERE ... уберите.
  • Почему не проходит внутренний звонок?

    Rsa97
    @Rsa97
    Вячеслав Барсуков: А Вы точно привели рабочий диалпан? Я не вижу ни одного места, где может сработать вызов экстеншина 111. Дайте лучше вывод dialplan show из консоли.
  • Как предсказать состояния полета бумажного самолетика?

    Rsa97
    @Rsa97
    Дмитрий Фондомакин: Почему прерывать? В стабильной модели при достаточно медленном приближении к нулевой скорости будет превышение угла атаки, заваливание, клевок носом и скорость начнёт расти, если хватит высоты, то всё снова стабилизируется. При порыве ветра всё сложнее, даже если рассматривать поток, как ламинарный, то понять, как он развернёт самолётик, довольно сложно. Но в принципе это означает, что возникнет интервал нестабильности, затем либо штопор, либо снова выход в стабильное снижение.
  • Как предсказать состояния полета бумажного самолетика?

    Rsa97
    @Rsa97
    Дмитрий Фондомакин: Простая экстраполяция без учёта физмодели не годится, если три секунды назад скорость была 10 км/ч, а сейчас 5 км/ч, значит ли, что через шесть секунд она будет -5 км/ч?

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

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

    Rsa97
    @Rsa97
    Дмитрий Фондомакин: Положение в пространстве можно не учитывать только если планер находится в устоявшемся снижении и нет возмущений атмосферы, тогда всё определяется одним параметром - аэродинамическим качеством планера. Любые другие варианты зависят от крена, тангажа и угла атаки.
  • Как предсказать состояния полета бумажного самолетика?

    Rsa97
    @Rsa97
    Дмитрий Фондомакин: В принципе, если аэродинамическая схема планера устойчива, то самолёт будет стремиться соблюдать скорость, на которую он оттриммирован. Если скорость (воздушная) вырастает, то начинает расти тангаж, вертикальная скорость растёт, горизонтальная падает, воздушная тоже падает, тангаж уменьшается, и т.д., то есть возникшее возмущение гасится серией колебаний. В поперечной плоскости примерно то же самое, на устойчивой схеме при крене возникает возвращающая сила.
    Если схема неустойчива, то отклонение не гасится, а усиливается, что приводит к штопору или пике.
    Ограничение - критическое значение угла атаки (угол между хордой крыла и набегающим потоком). Если его превысить, то поток на крыле срывается и происходит сваливание.
    В более полной модели добавляются дополнительные моменты сил, например повёрнутый руль поворота не только разворачивает планер влево/вправо, но и добавляет кренящий момент.

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

    Rsa97
    @Rsa97
    Дмитрий Фондомакин: Увы, мои знания - на уровне продвинутого симмера, то есть я представляю себе общие процессы полёта, но выразить их в конкретных формулах вряд ли смогу. Насколько я знаю, те же моделисты для приближённых расчётов обычно используют номограммы, описывающие зависимости между параметрами модели и её поведением в полёте.
    Ну и ещё неприятный момент, большая часть параметров самолёта должна быть заложена в расчётную модель заранее, пытаться вычислить их по замерам в полёте - отдельная сложная задача.