Применение GROUP BY - MySQL
Формулировка задачи:
Здравствуйте! Подскажите кто может ,пожалуйста, не очень специалисту в sql, как сделать следующие вещи:
Имеем таблицу вида:
id house service
1 1 disconnected
2 1 disconnected
3 1 connected
4 2 connected
5 3 disconnected
6 4 disconnected
7 5 connected
8 5 disconnected
Имеются дома в которых услуга(service) либо была когда-то подключена(disconnected), либо подключена(connected) сейчас.
Как выбрать уникальные дома, в которых на данный момент нет статуса услуги 'connected'?
Решение задачи: «Применение GROUP BY»
textual
Листинг программы
SELECT * FROM твоя_таблица, (SELECT MAX(id) AS num FROM твоя_таблица GROUP BY house) AS псевдоним_таблицы WHERE твоя_таблица.service != 'connected' AND твоя_таблица.id = псевдоним_таблицы.num;
Объяснение кода листинга программы
В данном коде применяется оператор SELECT для выбора всех полей из таблицы твоя_таблица
. Также используется подзапрос с применением оператора GROUP BY для создания псевдонима таблицы псевдоним_таблицы
. В этом подзапросе находится максимальное значение id в каждой группе, которая определяется по полю house
. Затем в основном запросе происходит соединение таблиц твоя_таблица
и псевдоним_таблицы
по полю id
. В итоге получается выборка всех полей из таблицы твоя_таблица
, где поле service
не равно 'connected' и id соответствует максимальному значению в своей группе, определенной по полю house
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д