• Как правильно использовать REPLACE при LEFT JOIN в MySQL?

    @Depleted Автор вопроса
    Rsa97, просто шикарно, спасибо огромнейшее!
    Написано
  • Как правильно использовать REPLACE при LEFT JOIN в MySQL?

    @Depleted Автор вопроса
    Спасибо Вам, добрый человек!
    Сам шаблон вытягивается целиком, прям великолепно.
    Но, я так понимаю, здесь таблица `pages` вообще не участвует в процессе, а разметка получается исключительно по ID таблицы `templates`, то есть, не получается вытянуть столбцы таблицы `pages`...

    С WITH вообще ранее не сталкивался, погуглил, пояндексил, но не смог найти материал, способный объяснить, как можно "подружить" все 3 таблицы друг с другом, используя для выборки ID (либо какой-то другой идентификатор) таблицы `pages` с выгрузкой не только шаблона, но и параметров из `pages`.
    Попытки расширить `result` и/или WITH запросом из `pages` + LEFT JOIN `templates` привели к ошибке:
    #4002 - WITH column list and SELECT field list have different column counts

    Но Ваше решение, думаю, в любом случае приведет к желаемому результату))

    P.S. некорректно выбрал тег для вопроса... MariaDB 10.11.6
    Написано
  • Как правильно использовать REPLACE при LEFT JOIN в MySQL?

    @Depleted Автор вопроса
    mayton2019, так поле то такое есть, как и все остальные, перечисленные в посте и в самих запросах)
    собственно, методом проб и ошибок выяснил, запрос внутри WITH "не знает" ни один из перечисленных столбцов.
    Но рабочий вариант так и не соорудил.
    Написано
  • Как правильно использовать REPLACE при LEFT JOIN в MySQL?

    @Depleted Автор вопроса
    mayton2019, спасибо за отзывчивость!

    Ряд небольших ошибок был с неймингом столбцов, если брать запрос из комментария (Например, неизвестный столбец p.id). Чутка поправил.
    Но, к сожалению, ловим ошибку:
    6635088c2f906608665357.jpeg
    Написано
  • Почему COUNT неправильно считает?

    @Depleted Автор вопроса
    Также очень странно считались NULL, в таблице их несколько тысяч, но данный запрос выдавал 11.

    В итоге использовал Ваш подход, немного переделав, родил такое вот чудо:
    SELECT q1.c AS men, q2.c AS women, q3.t AS total FROM (SELECT COUNT(DISTINCT CASE WHEN people.gender = 'М' THEN list.id END) AS c FROM ListTable AS list LEFT JOIN PeopleTable AS people ON (list.userID = people.id)) q1, (SELECT COUNT(DISTINCT CASE WHEN people.gender = 'Ж' THEN list.id END) AS c FROM ListTable AS list LEFT JOIN peopleTable AS people ON (list.userID = people.id)) q2, (SELECT COUNT(list.id) AS t FROM ListTable AS list) q3
    Таким образом, получил общее число, кол-во мужчин и женщин. А "неопределенных" пользователей уже можно спокойно высчитать.

    Ещё раз спасибо большое!
  • Почему COUNT неправильно считает?

    @Depleted Автор вопроса
    Спасибо большое!

    Данный запрос крашит хост, хотя по одному подсчету всё считает просто великолепно, хоть и занимает этот запрос почти 4 секунды.
  • Почему COUNT неправильно считает?

    @Depleted Автор вопроса
    ChairfaceChippendale, да, но я грешу на кодировку, т.к. если писать like '%М%', ситуация та же, а like N'%М%' не находит ничего.
  • Почему COUNT неправильно считает?

    @Depleted Автор вопроса
    Пробовал просто с JOIN, вывод тот же. Пытался вложенные запросы делать - безрезультатно...