Показать количество всех дат в соответствии с другой таблицей в sql?

Записать функцию с помощью pl / perlu и использовать этот модуль https://metacpan.org/pod/HTML::Entities

Конечно, вам необходимо установить perl и pl / perl.

1) Прежде всего создайте процедурный язык pl / perlu:

CREATE EXTENSION plperlu;

2) Затем создайте такую ​​функцию:

CREATE FUNCTION decode_html_entities(text) RETURNS TEXT AS $$
    use HTML::Entities;
    return decode_entities($_[0]);
$$ LANGUAGE plperlu;

3) Затем вы можете использовать его следующим образом:

select decode_html_entities('aaabbb&.... asasdasdasd …');
   decode_html_entities    
---------------------------
 aaabbb&.... asasdasdasd …
(1 row)

2
задан Strawberry 17 January 2019 в 13:18
поделиться

2 ответа

Вы делаете свое LEFT объединение в объединение INNER, включив критерии в предложение WHERE. Попробуйте это:

SELECT calendar.datefield, COUNT(calendar.datefield)
FROM calendar
LEFT JOIN final_registration
    ON DATE_FORMAT(calendar.datefield, '%Y-%m-%d') = DATE_FORMAT
(final_registration.booking_date, '%Y-%m-%d')
  AND final_registration.event_id = '101'
WHERE DATE_FORMAT(calendar.datefield, '%Y-%m-%d') <= DATE_FORMAT( CURDATE(), '%Y-%m-%d' )
  AND DATE_FORMAT(calendar.datefield, '%Y-%m') = DATE_FORMAT( CURDATE(), '%Y-%m' )
GROUP BY DATE_FORMAT(calendar.datefield, '%Y-%m-%d')
0
ответ дан Richard Hansell 17 January 2019 в 13:18
поделиться

Необходимо перенести некоторые ограничения в предложении WHERE в предложение ON:

SELECT
    c.datefield,
    COUNT(f.booking_date) AS cnt
FROM calendar c
LEFT JOIN final_registration f
    ON c.datefield = DATE(f.booking_date) AND
       f.event_id = '101'
WHERE
    c.datefield BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01') AND CURDATE()
GROUP BY
    c.datefield;

enter image description here

[1113 ]

Демонстрация

Обратите внимание, что вы хотите сосчитать поле из таблицы final_registration, которая появляется справа от левого соединения.

Задержка в моем ответе была из-за очистки вашего запроса, чтобы удалить все ненужные вызовы на DATE_FORMAT. Вы должны иметь возможность иметь дело непосредственно с datefield. Что касается предложения WHERE, то, похоже, вам просто нужны даты, которые находятся в текущем месяце, но не позднее текущего дня месяца.

0
ответ дан Tim Biegeleisen 17 January 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: