Вывести строки из бд с определенным значением - MySQL

Узнай цену своей работы

Формулировка задачи:

Есть таблица: id дата Номер Результат 1 2017-04-20 50000 Да 2 2017-04-21 50000 Нет 3 2017-04-20 40000 Нет 4 2017-04-21 40000 Нет 5 2017-04-23 30000 Да 6 2017-04-20 30000 Нет Как выбрать строки со значением поля 'Результат'='Нет' в которых поле "Номер" с максимальной датой не равно 'ДА'? т.е. получится вывод строк с id=2,4.
Листинг программы
  1. SELECT
  2. * FROM `table1` as t1
  3. group by numer
  4. having (select max(data) from `table1` where rez='Нет' and nomer=t1.nomer group by numer)>=
  5. (select max(data) from from `table1` where rez='Да' and nomer=t1.nomer group by numer)
  6. order by nomer
выводит чуть ли не все строки и нужные и не нужные. Может быть вы что-то подскажете умное.

Решение задачи: «Вывести строки из бд с определенным значением»

textual
Листинг программы
  1. SELECT
  2.   table1.*
  3. FROM
  4.   (SELECT numer, MAX(DATA) mdata FROM table1 GROUP BY numer) maxD
  5.   JOIN table1 ON table1.numer = maxD.numer AND table1.data = maxD.mdata
  6. WHERE
  7.   table1.Результат = 'Нет'

Объяснение кода листинга программы

  1. Создается подзапрос, который выбирает максимальное значение данных для каждого уникального значения в столбце numer таблицы table1.
  2. Результат этого подзапроса сохраняется в временной таблице с именем maxD.
  3. Основной запрос выполняет соединение (JOIN) между таблицей table1 и временной таблицей maxD по столбцам numer и mdata.
  4. Фильтр WHERE применяется к результатам соединения для выбора только тех строк, где значение в столбце Результат равно 'Нет'.

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


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

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

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы