Вывести строки из бд с определенным значением - 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.
выводит чуть ли не все строки и нужные и не нужные.
Может быть вы что-то подскажете умное.
SELECT * FROM `table1` as t1 group by numer having (select max(data) from `table1` where rez='Нет' and nomer=t1.nomer group by numer)>= (select max(data) from from `table1` where rez='Да' and nomer=t1.nomer group by numer) order by nomer
Решение задачи: «Вывести строки из бд с определенным значением»
textual
Листинг программы
SELECT table1.* FROM (SELECT numer, MAX(DATA) mdata FROM table1 GROUP BY numer) maxD JOIN table1 ON table1.numer = maxD.numer AND table1.data = maxD.mdata WHERE table1.Результат = 'Нет'
Объяснение кода листинга программы
- Создается подзапрос, который выбирает максимальное значение данных для каждого уникального значения в столбце
numer
таблицыtable1
. - Результат этого подзапроса сохраняется в временной таблице с именем
maxD
. - Основной запрос выполняет соединение (JOIN) между таблицей
table1
и временной таблицейmaxD
по столбцамnumer
иmdata
. - Фильтр WHERE применяется к результатам соединения для выбора только тех строк, где значение в столбце
Результат
равно 'Нет'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д