Применение 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5