• Как вывести много вложений вместе с постами?

    @alexalexes
    Это переменные:
    @post_id - в нее фиксируется предыдущее значение post_id;
    @p_count - а сюда фиксируется порядковый номер выбранного поста для этой выборки (это не идентификатор, а просто порядковый номер).
    Тут задаются начальные значения:
    (SELECT @p_count := 0, @post_id := -1) r
    А тут - переприсваиваются значения при выборке каждой строки:
    @p_count := if(@post_id != p.id, @post_id + 1, @post_id) as p_count,
     @post_id := p.id

    Поведение как в процедурном программировании.
    Считай, что select - это оператор foreach.
    А перечисление атрибутов select-а - это тело цикла.
    Порядок атрибутов тут важен, как и порядок строк внутри обычного цикла foreach.
    PS: Следует обратить внимание на то, если нужно каким-то образом пронумеровать порядок выборки, то следует указывать order by - как сортировать выборку. Иначе получите непредсказуемый результат нумерации.
  • Как в запросе использовать if или другую проверку?

    @alexalexes
    то client.r = user.id

    Вы вывести хотите значение или что-то связать?

    Так-то есть оператор условной выборки:
    SELECT orders, users, .... if(
                                         client.contact = 'phone' and client.r != '',  --условие
                                          user.id, -- берем этот атрибут в случае true
                                          client.r  -- берем этот атрибут в случае false
                                          ) as user_ident
    FROM .....
    WHERE
  • Как вывести много вложений вместе с постами?

    @alexalexes
    Если у вас очень большая выборка получается, то получайте из базы и отдавайте клиенту информацию порциями.
    Например, от известного поста start_post_id (начало будет -1) + определенное количество постов post_count.
    Select *
      from (Select p.id as post_id, p.create_date as p_create_date, p.title as p_title, p.text as p_text,
                   img.id as img_id, img.name as img_name,
                   v.id as v_id, v.name as v_name,
                   @p_count := if(@post_id != p.id, @post_id + 1, @post_id) as p_count,
                   @post_id := p.id
              from posts p
                   left join images img on img.post_id = p.id
                   left join videos v on v.post_id = p.id,
                   (SELECT @p_count := 0, @post_id := -1) r
             where p.id > :start_post_id
               and @p_count <= :post_count
         order by p.create_date 
           ) a
    where a.p_count < :post_count
  • Какие лучше сделать отношения между таблицами?

    @alexalexes
    Перечитайте решение, я сделал некоторые поправки в схему, перечитав ваше задание.
    Расширять ли Воздействие упражнения новыми связями - зависит от ограничений предметной области, как конкретизируете требования. Нужно ли отдельно указывать целевое воздействие на группу мышц или нет.

    PS: тут 4 таблицы, и все они нужны.
  • Как сформировать запрос MySQL?

    @alexalexes
    Да, сгораю на работе, однако.
  • Как сформировать запрос MySQL?

    @alexalexes
    Для решения этой задачи в mySQL нужен более изощренный Max, чем просто Max.
  • Как обновить всплывшую подсказку от атрибута title?

    @alexalexes Автор вопроса
    Я пытался манипулировать display, пробовал уводить из под курсора элемент, манипулируя index, положением элемента, отступами, но отображенная подсказка не менялась.
    Не знал про display: initial, это свойство дает эффект в Chrome, но Firefox 59.0.2 остается при себе.
    IE не знает значение свойства display: initial, ему нужно предложить block или inline и тд.
    С учетом вашего предложения решение будет выглядеть вот так.
    function set_title_data(target)
    {
      if(target.getAttribute('title') === '')
      {
        var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE ") >= 0 || ua.indexOf("Trident/") >= 0 || ua.indexOf("Edge/") >= 0;
        target.setAttribute('title', 'Ждите, идет загрузка данных...');
        setTimeout(function()
        {
          target.setAttribute('title', 'Готово! Данные получены!');
          target.style.display = 'none';
          target.style.display = msie ? 'block' : 'initial';
        }, 2000);
      }
    }
  • Как прочитать текст между тегами HTML на Node.js( cheerio)?

    @alexalexes
    <ul id="fruits">
      <li class="apple">Apple</li>
      <li class="orange">Orange</li>
      <li class="pear">Pear</li>
    </ul>

    $('.apple', '#fruits').text()
    //=> Apple
    
    $('ul .pear').attr('class')
    //=> pear
    
    $('li[class=orange]').html()
    //=> Orange

    Источник. Последний пример выводит содержимое тега <li class="orange">Orange</li>.
    Есть альтернативный метод text().

    PS: Cheerio's selector implementation is nearly identical to jQuery's, so the API is very similar.
    Собственно, знаете Jquery - считай, дефакто, знаете cheerio.
  • Как вычислить градус поворота между точками?

    @alexalexes
    Это для плоской поверхности годится, или если расстояние между точками пару градусов.
    Для шарообразной поверхности нужны другие формулы (из соображения теоремы Лобачевского).
    Могу найти их, но чуть позже.
  • Как исправить размытый текст в Windows Forms?

    @alexalexes
    https://answers.microsoft.com/ru-ru/windows/forum/...
    "Дополнительные параметры экрана" -> "Дополнительные изменения размера текста и других элементов"
    В этом окне можно изменить размер шрифта только определенных элементов.
    В проектах Visual Studio лучше отдельно подбирать шрифты под свои потребности.
  • Как исправить размытый текст в Windows Forms?

    @alexalexes
    Разрешение экрана, выдаваемое видеокартой, совпадает с разрешением матрицы?
    Еще момент. Если сигнал к монитору подается через аналоговый канал, то на мониторе еще нужно запустить опцию автоподстройки изображения. Иногда есть такое влияние.

    Если ничего не помогло, то остается винить на наборы шрифтов, которые установлены в ОС.
  • Как получить индекс массива внутри массива во Vue.js?

    @alexalexes
    my_array[ИНДЕКС_МАССИВА] тоже самое, что и item.
    item можно не только брать, но и модифицировать в цикле перебора.
    Нельзя только удалять или дополнять массив новыми элементами, пока он перебирается.
  • Как получить индекс массива внутри массива во Vue.js?

    @alexalexes
    Борис Манжела, объекты лежат в массиве, перебери их и модифицируй каждый объект.
    var my_array =
    [
      {
        data: 'первое'
      },
      {
        data: 'второе'
      },
      {
        data: 'третье'
      }
    ];
    
    my_array.forEach(function(item, i, arr)
    {
      item.operation = 5 * i;
    });
  • Управление Ajax-запросами?

    @alexalexes
    Как вы реализуете реакцию на изменение чекбоксов?
    Приведите пример кода.

    Проблема в том, что все запросы происходят параллельно, и когда быстро меняешь фильтры, то запросы отправляются одновременно

    JS - однопоточный, по крайней мере, тот что в браузере. Асинхронно обработчики событий могут выполняться, параллельно - никогда.
  • Запрос периода времени в течение дня?

    @alexalexes
    Правильно составленный SQL-запрос поможет избежать велосипедов на постобработке, уменьшить количество ненужных операций и циклов, поскольку СУБД имеет в себе оптимизационные алгоритмы, подключаемые по контексту данных и структуре запроса (см. термин "план выполнения запроса").
    А если часто используемые запросы помещать в объекты СУБД, такие как хранимые функции, процедуры и представления (view), то можно получить единый API уже в СУБД. В этом случае логика скриптов серверного приложения и клиентское приложение будут достаточно тонки и легковесны, а самое главное, легки в сопровождении разработчиками.
  • Запрос периода времени в течение дня?

    @alexalexes
    Естественно, не будет работать.
    Так как я сделал набросок решения, чтобы оставить место для вашего творчества.
    Запись после where, конечно же, должна образовывать валидное логическое выражение.
    Примеры, которые я вам дал, нужно трактовать так:
    Можно ограничение сделать такое:
    where
    -- отбрасывание из выборки событий между 9 и 10 часами
           TIME_TO_SEC(a.event_date) < TIME_TO_SEC('09:00:00') 
    and TIME_TO_SEC(a.event_date) > TIME_TO_SEC('10:00:00')

    Может такое:
    where
    -- исключение определенного перечня интервалов
     a.full_interval_number not in (0, 3, 7, 15)

    Или такое:
    where
    -- включить в выборку только интервалы  1 <  full_interval_number < 10
           a.full_interval_number > 1
    and a.full_interval_number < 10

    Если вы хотите еще что-то, например, соединить что-то из выше представленного, то:
    where
    -- исключение определенного перечня интервалов
     a.full_interval_number not in (0, 3, 7, 15)
    
    -- отбрасывание из выборки событий между 9 и 10 часами
    and TIME_TO_SEC(a.event_date) < TIME_TO_SEC('09:00:00') 
    and TIME_TO_SEC(a.event_date) > TIME_TO_SEC('10:00:00')

    Обратите внимание, как составляют логические выражения. Для соединения используется OR или AND, есть еще NOT. Видеть эти выражения и манипулировать ими - это основное занятие программиста, жалко, что вы просто копируете решения.
  • Запрос периода времени в течение дня?

    @alexalexes
    Оборачиваете в еще один select запрос и пишите любые ограничения в Where.
    select * from 
    (
     -- подзапрос интервалов
    ) a
    where
    -- отбрасывание из выборки событий между 9 и 10 часами
           TIME_TO_SEC(a.event_date) < TIME_TO_SEC('09:00:00') 
    and TIME_TO_SEC(a.event_date) > TIME_TO_SEC('10:00:00') 
    
    -- исключение определенного перечня интервалов
     a.full_interval_number not in (0, 3, 7, 15)
    
    -- включить в выборку только интервалы  1 <  full_interval_number < 10
           a.full_interval_number > 1
    and a.full_interval_number < 10
  • Запрос периода времени в течение дня?

    @alexalexes
    Нужно только использовать floor() вместо ceil(), чтобы округлить в меньшую сторону. Получится кол-во прошедших полных интервалов. Решение поправил.
    Однако, решение выше даст ответ для времени в пределах отрезка [begin, end].
    Если вам надо выводить кол-во прошедших интервалов на те сутки, для которых задано event_date, нужно немного поменять CASE:
    SELECT t.event_date,             -- атрибут таблицы типа datetime, для которого определяем интервал, выведен для того, чтобы наблюдать за процессом отладки
    case                                                                         -- SQL-конструкция вида "case  when ... then ... else ... end", с помощью которой можно выводить не только конкретное значение атрибута, но и задавать условие, при котором конечное значение  результата будет вычисляться по-разному в пределах одной выбранной записи.
      when TIME_TO_SEC(t.event_date) > inter.begin AND TIME_TO_SEC(t.event_date) < inter.end                           -- если t.event_date, выраженное в суточных секундах, находится в периоде (inter.begin,  inter.end), также выраженных в суточных секундах,...
      then floor((TIME_TO_SEC(t.event_date) - inter.begin) / inter.width)           -- ... то вычисляем количество полных  интервалов
      
      when TIME_TO_SEC(t.event_date) <= inter.begin -- если еще рано до периода подсчета интервалов, ...
      then 0  -- то, по текущей дате t.event_date ноль интервалов
      
      when TIME_TO_SEC(t.event_date) >= inter.end -- если время больше или равно окончанию периода, ...
      then floor((inter.end - inter.begin) / inter.width)  -- ...то выдаем кол-во интервалов
    
      else null -- по идее, сюда никогда не попадем, а вдруг?
    
    end as full_interval_number       -- кол-во прошедших полных интервалов, начинается с 0
    FROM table t,                     -- ваша таблица
        (select TIME_TO_SEC('09:00:00') as begin,            -- начало дневного периода
                TIME_TO_SEC('18:00:00') as end,                 -- конец дневного периода
                TIME_TO_SEC('00:15:00') as width                -- ширина интервала
         ) inter                    -- параметрический подзапрос, все настраиваемые константы в одном месте - удобно при отладке
  • Запрос периода времени в течение дня?

    @alexalexes
    Если вы новичок в программировании запросов, то, чтобы понять этот запрос, нужно немного подготовитсья:
    1) Календарные типы данных;
    2) CASE-функция;
    3) TIME_TO_SEC();
    4) ceil(), математические функции;
    5) Подзапросы.
  • Формирование запроса?

    @alexalexes
    Ну так, кто же вставляет where между таблицами и подзапросами.
    Ему место после них:
    SELECT *
       from (SELECT
      servers.id,
      servers.game,
      servers.votes,
      @n := @n + 1 AS rank
    FROM servers , (SELECT @n := 0) r 
     WHERE game like 'minecraft' 
    ORDER BY servers.votes DESC
    ) abs where id = 3

    Только учтите, что ранжирование в этом случае будет среди записей game like 'minecraft' , а не среди всех записей. Хотите по-другому, выносите условие во внешний уровень.