powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор значения по условию из таблицы за макс. дату
9 сообщений из 9, страница 1 из 1
Выбор значения по условию из таблицы за макс. дату
    #38673493
l_2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Прошу помощи, т.к. сам ещё очень плохо разбираюсь в сложных запросах...
Есть таблица, одна:

ID STATE DATE d_type
15189 C 22.11.2011 11:39:23 0
15189 K 22.11.2011 11:39:31
15189 K 22.11.2011 11:39:39
15189 N 22.11.2011 11:39:44
5189 C 17.12.2012 12:40:49
5189 K 17.12.2012 12:41:03
5189 N 17.12.2012 12:41:44
5189 C 05.02.2014 16:25:21 0
5189 K 05.02.2014 16:25:37 0
5189 N 05.02.2014 16:26:08 0

Задание - посчитать кол-во ID, где дата максимальная в месяце, STATE=N и d_type=0. Иначе говоря, для этого ID после максимальной даты состояние STATE=N и d_type=0 не изменилось. Могут затребовать подсчёт за любой месяц и год. Я отчасти понимаю, что можно выбрать строку в которой STATE=N и d_type=0, потом сравнить её с датой и если она не последняя в месяце, то... А вот дальше как и можно-ли это организовать в одном запросе? Очень прошу помочь знающих людей! Мне до этого попадались примитивные выборки, знаний не хватает и время поджимает.
Заранее спасибо!
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38673586
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
l_2001,
DDL
Код: sql
1.
2.
3.
4.
5.
6.
create table terrible_table(
  `ID` int,
  `STATE` char(1),
  `DATE` datetime,
  `d_type` tinyint
);

query
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select
  count(distinct t.`ID`)
from 
  `terrible_table` t,
  (  select `ID`, max(`DATE`) max_date 
     from `terrible_table` 
     where `DATE` between '2012-12-01' and '2013-12-31 23:59:59'
     group by `ID`
  ) f
where
  t.`ID` = f.`ID` and
  t.`DATE` = f.max_date and
  t.`STATE` = 'N' and
  t.`d_type` = 0
;

...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38673766
l_2001,

Как вариант:
1) self left join (anti)
2) not exists - подзапрос (интуитивно более понятное решение, чем через left join)
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38673982
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхl_2001,

Как вариант:
1) self left join (anti)
2) not exists - подзапрос (интуитивно более понятное решение, чем через left join)

а что такое self left join???

я всегда думал self join - it means left |right joins
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38673996
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

селфджойн - это джойн таблицы с собой (своей копией под другим алиасом)
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38674029
alex564657498765453,

странно, что ты заинтересовался именно словом SELF. Я думал недоумение будет вызывать слово SEMI :)
А так да - SEF - это просто самообъединение таблицы с самой собой. Как и любой другой джойн может быть INNER или OUTER (left | right | full)
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38674033
заработался, задумался, опечатался.Добрый Э - Эхalex564657498765453,

странно, что ты заинтересовался именно словом SELF. Я думал недоумение будет вызывать слово SEMI ANTI :)
А так да - SEF - это просто самообъединение таблицы с самой собой. Как и любой другой джойн может быть INNER или OUTER (left | right | full)
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38674189
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх ,

с FULL вы поаккуратнее ;-) Нет его в MySQL ;(
...
Рейтинг: 0 / 0
Выбор значения по условию из таблицы за макс. дату
    #38674835
l_2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за советы! О результатах пока определённо сказать не могу, там вылезли сегодня некоторые нюансы и пришлось день убить в никуда, а в целом я хотя-бы понял в каком направлении меня "послали"! Кстати, сервер на IQ Sql, но это почти одно и то-же!
Ещё раз - спасибо за помощь!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор значения по условию из таблицы за макс. дату
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]