Обьединение двух условий с разных таблиц (WHERE, COUNT) - MySQL
Формулировка задачи:
Пытаюсь всячески разно объединить эти два условия, но никак не получается. Надо получить ИД конференций, которые заканчиваются завтра и выбрать те, где меньше 2 заявок (applications). Написал здесь раздельно чтобы было более понятен вопрос.
SELECT c.ID, c.DateEnd FROM conference c WHERE DateEnd = DATE_ADD(CURDATE(),INTERVAL 1 DAY) SELECT a.ID, a.IDConf FROM application a GROUP BY a.IDConf HAVING COUNT(a.IDConf) >= 2
Решение задачи: «Обьединение двух условий с разных таблиц (WHERE, COUNT)»
textual
Листинг программы
SELECT c.ID, c.DateEnd, COUNT(a.ID) app_count FROM conference c JOIN application a ON a.IDConf = c.ID WHERE c.DateEnd >= DATE_ADD(CURDATE(),INTERVAL 1 DAY) GROUP BY c.ID, c.DateEnd HAVING COUNT(a.ID) < 2
Объяснение кода листинга программы
В данном коде производится выборка данных из двух таблиц: 'conference' и 'application'.
- Выбираются необходимые поля: 'ID', 'DateEnd' из таблицы 'conference' и 'COUNT' из таблицы 'application'.
- Используется оператор JOIN для объединения строк из двух таблиц по полю 'IDConf'.
- В WHERE-условии задается критерий отбора: дата окончания конференции должна быть больше или равна текущей дате плюс один день.
- В GROUP BY-условии задается, что результаты выборки должны быть сгруппированы по полям 'ID' и 'DateEnd'.
- В HAVING-условии задается, что в каждой группе должно быть меньше двух записей.
- Результатом запроса будет список конференций, которые завершились не более одного дня назад, имеют меньше двух приложений и их ID.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д